2

所以我一直试图让这个重定向代码工作几个小时,这让我发疯了。我有相反的方向(非 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上的每个页面都重定向到完全相同的 url,减去www

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

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

等等等等。由于我的最顶层代码部分以相反的方向工作,我认为只需切换几件事并让它在几分钟内工作很容易,但我最终总是遇到 404、无限循环等等你。主要问题是我不完全理解这部分代码:

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

对 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扩展名的文件作为最终目的地。有什么建议么?

4

0 回答 0