2014-06-13 4 views
1

WWWWWW으로 리디렉션하기 위해 다음 코드 중 하나를 사용할 때의 문제는 URL이 인코딩된다는 것입니다. 예를 들어URL- (다시) 인코딩없이 www가 아닌 ​​www를 .htaccess로 리디렉션하는 방법은 무엇입니까?

(재 때)

example.com/x%20y 

재 인코딩을 얻는다 : RFC 3986에 따른 잘못된

www.example.com/x%2520y 

. 이 동작은 mimetex 출력을 저하시킵니다.

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

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

RewriteCond %{HTTP_HOST} ^example.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 
내가 다시 인코딩없이 htaccess로와 WWW로 리디렉션 할 수 있습니다 어떻게

?

+1

대답은 농담이 아닙니다. 올바른 대답입니다. – zylstra

+1

@Prix이 문제를 해결할 수있는 의견을 게시하여 답변 해 주시기 바랍니다. – JakeGould

+1

@ JakeGould 그게 정확히 그의 문제를 해결할 수 있는지 묻고 있었다 :) – Prix

답변

3

no encoding을 나타내는 NE 플래그를 사용해 볼 수 있습니다.

마찬가지로 [R=301,NE,L]과 같은 경우 301 리디렉션을 사용하고 캐시되었을 수 있으므로 캐시를 사용하거나 지우는 데 사용하는 브라우저와 다른 브라우저를 사용해야한다는 사실을 명심하십시오.

전체 예제는 다음과 같습니다

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,L] 

나는 개인적으로 %{REQUEST_URI}를 사용하여있다.