我的网站使用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
知道为什么会这样吗?
答案 0 :(得分:1)
不要混用mod_alias
和mod_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]
另请注意目标网址中的额外?
以删除任何预先存在的查询字符串。确保在测试时清除浏览器缓存。