我只想问一下我可以使用“?”在我的htaccess url重写?'
它喜欢这个主题标题:
RewriteRule ^example.html?site=(.*)$ /example.php?allowfrom=$1 [L]
或
RewriteRule ^example.html?id=([0-9]+)&view=([a-z]*)$ /example.php?id=$1&plus=$2 [L]
我可以吗?特别感谢。
答案 0 :(得分:3)
不,您无法在?
指令中使用RewriteRule
来匹配查询字符串。 RewriteRule
与仅限的网址匹配,后者不包含查询字符串。 (旁白:只有当?
是URL路径的一部分,即在请求的URL中进行%。编码时,才能与RewriteRule
匹配 - 但这是非常不寻常的,并且非常气馁,因为它会引起混淆,只是在一些系统上破坏。)
为了匹配查询字符串,您需要使用RewriteCond
指令。例如:
RewriteCond %{QUERY_STRING} ^site=(.*)$
RewriteRule ^example\.html$ /example.php?allowfrom=%1 [L]
请注意,%1
(与$1
相对)与(最后匹配的)RewriteCond
指令中的带括号的子模式匹配。