在重写我的网址file.php?style=foo&page=2
之前,工作正常。
重写后,它停止工作,并在最后与?page
变量保持在同一页面,就好像它没有被抓住一样:
foo-new?page=2
重写后,页面参数停止处理干净的网址。
以下是我的重写规则:
RewriteCond %{QUERY_STRING} ^style=([A-Za-z-]+)/?$
RewriteRule ^file\.php$ %1-new? [NS,R=301,L]
RewriteRule ^([A-Za-z-]+)-new/?$ file.php?style=$1&redirect=no [NS]
答案 0 :(得分:0)
所以我翻译你想做的事情,我改变你的规则并写下来。请告诉我,我是对还是错。
您想检查查询字符串中是否有可选参数“style”。
RewriteCond %{QUERY_STRING} ^style=([A-Za-z-]+)/?$
^
以及/?
和$
有什么意义?删除它们:
RewriteCond %{QUERY_STRING} style=([A-Za-z-]+)
这种方式更清晰,仍然可以满足您的需求。
RewriteRule ^file\.php$ %1-new? [NS,R=301,L]
?
有什么意义?删除它:
RewriteRule ^file\.php$ %1-new [NS,R=301,L]
所以,请尝试这些规则并告诉我它们是否有效,如果没有,请更具体或提供您想要重写的真实URL样本:
RewriteCond %{QUERY_STRING} style=([A-Za-z-]+)$
RewriteRule ^file\.php$ %1-new [QSA,NS,R=301,L]
RewriteRule ^([A-Za-z-]+)-new/$ file.php?style=$1&redirect=no [NS]