0

我已经想出了如何将我的所有页面从example.com获取到www.example.com,但是我发现的任何代码都不能起到完全相​​反的作用。我需要从www.example.com转到example.com

这是我的代码。有人可以帮我重写它,让它反其道而行之吗?我进行 404 或无限循环的任何编辑。

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

- - -编辑 - - -

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

-----编辑2-----

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

Options +MultiViews

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^ /%1.php [L]

我选择了,Options +MultiViews因为你给我的是Options -MultiViews它总是把我带到“未找到,这里有类似的文件”页面。

4

1 回答 1

0

尝试:

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

编辑:

为避免与 mod_negotiation 冲突,请尝试在上述规则之后添加:

Options -MultiViews

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^ /%1.php [L]
于 2012-12-14T23:54:35.200 回答