Regex Apache2:重写包含问号的url
我使用的是Regex Apache2:重写包含问号的url,regex,apache,mod-rewrite,url-rewriting,Regex,Apache,Mod Rewrite,Url Rewriting,我使用的是apache2.4.7。我使用mod_rewrite修改一些URL 我想重写http://example.com/servicename/oldpage?id=abc至http://example.com/servicename/newpage 其他类似的重写也能起作用,所以我相信url中的?会引起问题。 我已尝试使用\来转义它 这是因为url中没有?: RewriteRule^/servicename/old/servicename/new 但这些都不起作用: RewriteRule
apache2.4.7
。我使用mod_rewrite
修改一些URL
我想重写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
:但我没有成功地让它们工作
应该如何重写包含问号的url
编辑:我尝试了中给出的解决方案,但无法使它们对我起作用。这个问题是关于在重写时保留查询字符串,而我想在重写时删除它。重写规则模式与URL中主机名和端口之后、查询字符串之前的部分相匹配 当请求的URI包含查询字符串而目标URI不包含时,RewriteRule的默认行为是将该查询字符串复制到目标URI。使用[QSD]标志会导致丢弃查询字符串 因此,这应该是可行的:
RewriteRule ^/servicename/oldpage /servicename/newpage [QSD]
您希望重写依赖于
id=
查询字符串的内容,还是只需要从发送到newpage的请求中删除它?我希望删除它,而不关心它的内容。的可能重复