2017-02-23 1 views
2

모두 non-www 및 모두 non-httpshttps://www URL로 리디렉션하고 싶습니다..htaccess에서 잘못된 리디렉션

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI}$1 [R=301,L] 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}$1 

루트 경로를 위해 노력하고 있습니다 :

나는 다음과 같은 코드가 포함 된 htaccess로이

OK https://www.mywebsite.com => https://www.mywebsite.com 
OK http://mywebsite.com => https://www.mywebsite.com 
OK https://mywebsite.com => https://www.mywebsite.com 
OK http://www.mywebsite.com => https://www.mywebsite.com 

를하지만 갈 때 (가지) 버그가 하위 폴더 :

OK https://www.mywebsite.com/tmp => https://www.mywebsite.com/tmp 
KO https://mywebsite.com/tmp => https://www.mywebsite.com/tmp/tmp 
KO http://www.mywebsite.com/tmp => https://www.mywebsite.com/tmp/tmp 
KO http://mywebsite.com/tmp => https://www.mywebsite.com/tmp/tmp 

위에서 볼 수 있듯이 하위 폴더가 다시 추가되고 404 오류가 발생합니다.

예상되는 리디렉션을 얻으려면 .htaccess 규칙을 어떻게 수정할 수 있습니까?

당신에게

답변

4

문제가 REQUEST_URI의 끝에서 값 즉 URI를 캡처 추가하고 %{REQUEST_URI}$1의 사용이다 대단히 감사합니다.

또한 최적화로이 같은 일에 모두 규칙을 결합 할 수 있습니다 :

RewriteEngine On 

RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] 
RewriteRule^https://www.%1%{REQUEST_URI} [R=301,L,NE] 

이 변경을 테스트하기 전에 브라우저 캐시를 삭제해야합니다.

+2

고마워요. 매력처럼 작동합니다. – void

관련 문제