我有一个有论坛的网站,这是我的htaccess文件中的当前重写规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*/?forum/?(.*)$ /forum.php [L]
现在,因为我有谷歌索引的网址:
www.domain.com/abc/forum/rest-of-url
www.domain.com/defg/forum/rest-of-url
www.domain.com/something-else/forum/rest-of-url
并且所有链接都显示相同的页面,只能访问:
www.domain.com/forum/rest-of-url
域/和/ forum /
之间没有任何单词(abc,defg等)基本上就是这样的链接:
www.domain.com/abc/forum/rest-of-url
应该301重定向到:
www.domain.com/forum/rest-of-url
我尝试将重写规则更改为:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule /forum/?(.*)$ /forum.php [L]
但是后来我在Google网站管理员工具中为所有以前编入索引的网址收到了大量404错误,所以我认为有一个解决方法是301重定向,但我还没想出如何避免进入循环。
感谢任何帮助。感谢
答案 0 :(得分:0)
通过httpd.conf
启用mod_rewrite和.htaccess,然后将此代码放在.htaccess
目录下的DOCUMENT_ROOT
中:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# redirect any /foo/forum/index to /forum/index
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[^/]+/(forum/[^/]+/?)$ /$1 [L,R=301,NC]
验证一切正常后,将R=302
替换为R=301
。在测试mod_rewrite规则时,请避免使用R=301
(永久重定向)。