我不明白为什么我总是在重写规则时遇到这么大的问题,但我只是想在查询字符串存在的情况下添加一个查询字符串,如果查询字符串不存在则添加一个?。实际上,我并不关心URL是否在浏览器中更改--它只需要加载正确的目标页面。
RewriteRule /cia16(.*)\?(.*) /cia$1?$2&CIA=16
RewriteRule /cia16(.*) /cia/$1?CIA=16如果我转到/cia16/steps.php?page=1,它实际上被重写为/cia/steps.php?CIA=16 --也就是说,似乎接受查询字符串部分在重写过程中甚至不被视为URL的一部分。
我必须做什么才能使重写与现有的查询字符串一起正常工作?
发布于 2013-04-11 08:05:31
不能匹配RewriteRule中的查询字符串,需要匹配RewriteCond中的%{QUERY_STRING}变量。但是,如果您只想附加查询字符串,则可以只使用QSA标志:
RewriteRule /cia16(.*) /cia/$1?CIA=16 [QSA]URI:/cia16/steps.php?page=1将被重写为/cia/steps.php?CIA=16&page=1。如果出于某种原因,您需要在CIA=16之前使用page=1,那么您可以这样做:
RewriteRule /cia16(.*) /cia/$1?%{QUERY_STRING}&CIA=16https://stackoverflow.com/questions/15938598
复制相似问题