我正在使用Apache 2.4.7。我使用mod_rewrite来修改一些urls。
我想把http://example.com/servicename/oldpage?id=abc重写为http://example.com/servicename/newpage。
其他类似的重写工作,所以我相信在url中的?正在引起问题。我试过用\来逃避它。
这是因为url中没有?:
RewriteRule ^/servicename/old /servicename/new
但这些都没用:
RewriteRule ^/servicename/oldpage?id=abc /servicename/newpage
RewriteRule ^/servicename/oldpage\?id=abc /servicename/newpage
我也尝试过使用RewriteCond的例子,例如:.htaccess rewrite URL with a question mark "?",但我没有设法让它们正常工作。
应该如何重写包含问号的url?
编辑:我尝试了用rewrite rule regex给出的解决方案,但无法让它们为我工作。这个问题是关于在重写时保留查询字符串,而我想在重写时删除它。
发布于 2016-05-30 12:02:25
RewriteRule模式与URL中主机名和端口之后以及查询字符串之前的部分匹配。
当请求的URI包含查询字符串,而目标URI不包含时,RewriteRule的默认行为是将该查询字符串复制到目标URI。使用QSD标志将导致丢弃查询字符串。
因此,这应该是可行的:
RewriteRule ^/servicename/oldpage /servicename/newpage [QSD]https://stackoverflow.com/questions/37524006
复制相似问题