www到非www重定向不会工作

时间:2015-11-15 19:32:54

标签: apache .htaccess url-rewriting

我使用以下代码将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文件,因为我在共享环境中。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

正如奥拉夫在评论中所说,通常这不应该发生。但是,有一些问题,如托管帐户(在共享环境中)以某种方式依赖于配置,并启用mod_rewrite继承解决问题:

RewriteOptions Inherit

不可否认,这应该如何或为何起作用有点神秘。 (特别是因为父指令是在子指令等后执行的?)

您也可以尝试更改RewriteRule以使用REQUEST_URI的值,例如:

RewriteRule ^ http://%1%{REQUEST_URI} [R=302,L]

当您确定它正常工作时,请更改为301。永久重定向由浏览器自然缓存,因此可以使测试变得棘手。 (另外,在测试之前清除浏览器缓存!)