2012-12-14 102 views
0

我已经找到了如何让我的所有网页的从example.comwww.example.com,但我找不到任何代码是不能工作做完全相反的。我需要从www.example.comexample.comWWW到非www重定向问题

这是我的代码。有人可以帮我改写它,这样做是相反的吗?我做的任何编辑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] 

----- EDIT 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,它总是把我带到“未找到,这里是类似的文件”页面。

回答

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] 
+0

好吧,这是主要工作。我遇到的问题是,使用此代码,** www.example.com/test **正在变为** example.com/test.php **。我想摆脱.php,有关如何做的建议?我在.htaccess中安装的任何其他代码似乎都不起作用。 –

+0

@RichardColeman你有其他规则吗?如果是这样,请确保重定向**之前**您可能有任何其他重写规则。另外,请确保您关闭了“MultiViews”。 –

+0

没有其他规则。截至目前,我的代码由我编辑要添加的原始文章组成。 我假设'Options + MultiViews'是正确的选项,因为'Options -MultiViews'实际上把我带到了“我们找不到那个页面,但是这里有类似的结果”页面。 –