2014-12-19 3 views
1

나는이 코드를 수년 동안 사용해 왔습니다. 그러나 며칠 전부터 폴더와 관련하여 작업이 중단 된 것으로 보입니다.http301 www가 아닌 ​​웹에서 www로 리디렉션하지 않습니다.

RewriteEngine on 

#convert everything to www 
Options +FollowSymLinks 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

그래서, 그것을 포장하기 :

http://foo.com/blah.php ->http://www.foo.com/blah.php

을 그러나이 http://foo.com/bar/ ->http://www.foo.com 나는 철저하게 무슨 일이 일어나고 있는지 확인 http://www.redirect-checker.org/index.php을 사용하고 NOT http://www.foo.com/bar/

, 내가보기에 정상적인 http301 리디렉션이 있습니다. 내가주의하는 유일한 점은 잘못된 리디렉션이라는 것입니다.

.htaccess에서 모든 것을 삭제하려고했지만 위에 붙여 넣은 코드 행은 삭제했지만 결과는 동일합니다.

내 (공유 계획) 호스팅 회사가 Apache의 내부 구성에서 변경된 것일 수 있습니까?

미리 감사

+0

는/바 /'진짜 디렉토리'인가? '/ bar /'는'.htaccess'도 가지고 있습니다. – anubhava

+0

/bar /는 실제 디렉토리입니다. 예, .htaccess가 포함되어 있습니다. 그 파일을 지우거나 (비워두면) 리디렉션이 작동하는 것으로 나타났습니다. 그러나 RewriteEngine On을 추가하자마자 리다이렉트가 멈 춥니 다. – flapane

+0

예 올바른 동작입니다. 'RewriteEngine On'을두면 parent .htaccess의 모든 규칙을 차단합니다. – anubhava

답변

1

문제는 각 서브 디렉토리 Inherit를 사용하여이 www 추가 규칙은 해당 서브 디렉토리 만 $1에 대하여 설정하는 점이다. 부모의 .htaccess 대신에이 규칙을 사용

RewriteEngine on 

#convert everything to www 
Options +FollowSymLinks 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE] 
+1

지금 문제가 있습니다. 당신의 솔루션은 훌륭하게 작동합니다. 정말 고마워요! – flapane

+0

다행 이니 다행입니다. – anubhava

관련 문제