所以我一直试图让这个重定向代码现在工作几个小时,这让我发疯了。我有相反的方向(非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 :(得分: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]