我有一个基本的重写规则,将所有 / pagenames / 转换为 index.php?page = pagename
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)/$ /index.php?page=$1 [L]
这很好但我现在需要将所有旧流量从谷歌重定向到新网址。当我添加以下内容时:
Redirect 301 /pagename.php http://www.website.co.uk/pagename/
所有页面都重定向到此:
http://www.website.co.uk/?page=pagename
有人可以帮我找出原因吗?
由于 丹
答案 0 :(得分:2)
你不要为此混合mod_alias和mod_rewrite并通过mod_rewrite本身处理所有规则以便更好地控制:
RewriteRule ^(pagename/?)$ http://www.website.co.uk/$1 [R=302,L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)/$ /index.php?page=$1 [L,QSA]
这些规则的排序非常重要。
验证一切正常后,将R=302
替换为R=301
。在测试mod_rewrite规则时,请避免使用R=301
(永久重定向)。