301重定向& htaccess RewriteEngine相互矛盾

时间:2016-06-09 20:11:15

标签: php apache .htaccess redirect mod-rewrite

我的网站使用RewriteEngine隐藏URI中的变量,如下所示:

RewriteRule ^([^/\.]+)/?/([^/\.]+)/?$ page.php?theme=$1&pg=$2 [L]

这很好用,但是当我们重新启动时,我们也有一些301重定向来处理。我在重写规则下添加了这些,这是一个例子:

redirect 301 /about/about-the-site https://www.mywebsite.com/about-us

问题是,它正在重定向但是在url字符串中添加额外的垃圾:

https://www.mywebsite.com/?theme=about&pg=about-the-site

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

不要混用mod_aliasmod_rewrite规则,因为这两个模块在不同阶段执行。将所有内容保存在mod_rewrite本身:

RewriteEngine On

RewriteRule ^about/about-the-site/?$ https://www.mywebsite.com/about-us? [L,NC,R=301]
RewriteRule ^([^/.]+)/?/([^/.]+)/?$ page.php?theme=$1&pg=$2 [L,QSA]

另请注意目标网址中的额外?以删除任何预先存在的查询字符串。确保在测试时清除浏览器缓存。