我使用以下代码将www写入非www重定向:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
但是,www.mywebsite.com
重定向到mywebsite.com/www/
而不是mywebsite.com
。
我怀疑这可能是由于VirtualHost的DocumentRoot
配置,但我无法访问httpd.conf文件,因为我在共享环境中。
有什么想法吗?
答案 0 :(得分:1)
正如奥拉夫在评论中所说,通常这不应该发生。但是,有一些问题,如托管帐户(在共享环境中)以某种方式依赖于父配置,并启用mod_rewrite继承解决问题:
RewriteOptions Inherit
不可否认,这应该如何或为何起作用有点神秘。 (特别是因为父指令是在子指令等后执行的?)
您也可以尝试更改RewriteRule
以使用REQUEST_URI
的值,例如:
RewriteRule ^ http://%1%{REQUEST_URI} [R=302,L]
当您确定它正常工作时,请更改为301
。永久重定向由浏览器自然缓存,因此可以使测试变得棘手。 (另外,在测试之前清除浏览器缓存!)