使用以下任何代码将非WWW
重定向到WWW
时,我遇到的问题是网址已被编码。
例如:
example.com/x%20y
重新编码(重定向时)到:
www.example.com/x%2520y
根据RFC 3986,这是不正确的。此行为会降低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
?
答案 0 :(得分:3)
您可以尝试使用标记NE
,代表no encoding
。
与此[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}
。