2011-09-21 4 views
10

나는 .htaccess 내 사이트 주소 www을 강제하기 위해 노력하고있어 :mod_rewrite를 - 추가 WWW

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 
RewriteRule ^(.*)$ http://www.mysite.coml/$1 [R=301,L] 

나는이 확인 작업 mysite.com을 열 경우 - 그것은 www을 추가합니다. http://www.mysite.com/index.php이됩니다.

그러나 mysite.com/subpage을 열면 http://www.mysite.com/index.php으로 다시 리디렉션됩니다. http://www.mysite.com/subpage 대신.

그러나 http://www.mysite.com/subpage을 열면 리디렉션이 발생하지 않습니다 (예상되는 동작 임).

어떻게 해결할 수 있습니까? 내 사이트로의 모든 요청을 www 하위 도메인으로 리디렉션하고 싶습니다.

최상의 HTML5 Boilerplate .htaccess에서

답변

12

문제는 바로 여기에 있습니다 : $이 끝을 지정하면서

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 

^은 문자열의 시작 부분을 지정합니다.

작동 시키려면 .com 또는 .+ 뒤에 와일드 카드를 선택해야합니다.

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 
17

:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 
6

는 사실, 난 씨 Szanto에 동의해야합니다 :

알렉스는 말을 반복합니다. 그것은 문제가 나타납니다

은하지습니다 : 몇 가지 추가이 나를 위해 좋은 일을하는 것이 내가 발견 (Google을 통해) 연구를 통해

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 

:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTPS} !=on 
    RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] 
    RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 

씨 Szanto의 대답은, 잘 형식화되어 있지만 'www'가 누락 된 모든 요청을 'www'가 연결된 상태로 리디렉션하는 것으로 보입니다. 이것은 대부분의 하위 도메인에서 바람직한 결과가 아니 었습니다. 위의 코드는 TL 도메인 이름 앞에 'www'가없고 하위 도메인이없는 경우에만 리디렉션됩니다.

다른 사람들에게 도움이되기를 바랍니다.

+0

위의 대답이 가장 마음에 들었습니다. 하위 도메인을 사용하는 사람은 www를 불필요하게 (그리고 잘못) 추가하지 않도록보다 구체적이어야합니다. – Debriter