.htaccess 重写附加查询字符串

.htaccess 重写附加查询字符串,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我正在使用.htaccess文件将存档的旧aspx URL重定向到新的php站点。现在的要求如下: example.com/showad.aspx?adid=1234应该是example.com/ad/getad/1234 我在谷歌上搜索了这件事,得到了以下访问规则: RewriteCond %{QUERY_STRING} ^adid=(\d+)$ RewriteRule ^showad\.aspx$ /ad/getad/%1 除了结果url为example.com/ad/getad/1234

我正在使用.htaccess文件将存档的旧aspx URL重定向到新的php站点。现在的要求如下: example.com/showad.aspx?adid=1234应该是example.com/ad/getad/1234 我在谷歌上搜索了这件事,得到了以下访问规则:

RewriteCond %{QUERY_STRING} ^adid=(\d+)$
RewriteRule ^showad\.aspx$ /ad/getad/%1
除了结果url为example.com/ad/getad/1234?adid=1234外,该规则有效 我再次搜索并了解到,要删除输出url末尾的(adid=1234),您应该打一个问号?在替换参数的末尾,因此规则应为:

RewriteCond %{QUERY_STRING} ^adid=(\d+)$
RewriteRule ^showad\.aspx$ /ad/getad/%1?
但它不起作用! 结果url仍附加有原始查询字符串。我正在使用此网站测试我的htaccess规则:htaccess.madewithlove.be
有什么线索说明为什么会发生这种情况吗?

尝试将规则更改为

RewriteRule ^showad\.aspx$ /ad/getad/%1? [R=302,L]

您的规则很好-我刚刚在自己的.htaccess中测试了它。是htaccess测试仪网站出错了:)

如果没有
[R]
标志,我看不出这条规则会如何重定向?第二个代码应该可以工作。
RewriteRule
s只处理斜杠后面的部分-域后面的斜杠既不应该匹配也不应该重写。您是否尝试在服务器上运行此操作?