2012-12-14 84 views
2

所以我一直试图让这个重定向代码现在工作几个小时,这让我发疯。我有相反的方向(非www到www)与此代码工作:.htaccess将www重写为非www重定向问题

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ 
RewriteRule ^(.*) http://www.%{HTTP_HOST} [R=301] 

我发现了上述代码在这里: https://stackoverflow.com/questions/3013730/redirecting-non-www-to-www

我不得不删除从第三行的$ 1代码来得到它的工作:

RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301] 

我需要的是www.example.com重定向到example.com

并在每一页上www.example.com重定向到网址完全相同,减去WWW

www.example.com/test --->example.com/test

www.example.com/begin.php --->example.com/begin。 php

等等等等。由于我有最上面的代码部分工作在相反的方向,我认为只需切换几个事情并在几分钟内完成工作就很容易,但我总是会遇到404s,无限循环,以及什么有你。主要问题是我不完全理解这部分代码:

^[^.]+\.[^.]+$ 

apache greenie的任何帮助?太感谢了!

--- 编辑 ---

我发现了一个代码,是更接近我想要的,但它有自己的问题的份额。的代码是:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
RewriteRule ^.*$ http://example.com%{REQUEST_URI} [R=301,L] 

有两个问题与此代码:

1)当我在example.com/test键入,它首先穿过www.example.com/test如果可能的话,我希望避免这种情况。

2)当我在example.com/test键入,它在example.com/test.php结束了,我想避免具有与所述.PHP扩展作为文件最终目的地。有什么建议么?

回答

0

试试这个:

#www to non-www 
RewriteEngine On 
#Important to place 
RewriteBase/
RewriteCond %{HTTP_HOST} www\.example\.com$ [NC] 
RewriteRule ^(.*)/?$ http://example.com/$1 [L,R=301] 
+0

谢谢您的回复!正如所写,这给了我一个无限循环像example.com/example/example/example/example(等等等等)。我发现另一个代码主要是我想要的,但它仍然给我一些问题(请参阅上面的编辑)。 –

+0

@RichardColeman我更新了我的答案,以防止任何循环的可能性。 –

+0

再次感谢您的帮助。当我尝试www.example.com时,新代码仅仅是404s。我开始认为这是我的网络主机(1和1),这是导致问题的原因,因为几乎所有其他人都没有遇到同样的问题。 –