以下是规则:
RewriteRule ^two$ show.php?id=1
那么当你去two?id=2
$_GET['id']
等于1还是2?
我运行脚本,答案是1.但我不明白为什么?任何人都可以向我解释这个吗?
答案 0 :(得分:0)
Apache忽略RewriteRule的URL参数:
https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule
模式最初将与URL的部分匹配 在主机名和端口之后,以及查询字符串之前。
如果您希望与主机名,端口或查询字符串匹配,请使用 带有%{HTTP_HOST},%{SERVER_PORT}或。的RewriteCond %{QUERY_STRING}个变量。
因此,two?id=2
与您的规则匹配,因为网址为^two$
,因此设置为show.php?id=1
并注意在按照给定的新查询字符串时替换现有的查询字符串以上链接:
修改查询字符串默认情况下,查询字符串不会更改。但是,您可以在替换中创建URL 包含查询字符串部分的字符串。只需使用问号 在替换字符串内部以指示以下文本 应该重新注入查询字符串。当你想要删除一个 现有的查询字符串,只用一个结束替换字符串 问号。要组合新旧查询字符串,请使用[QSA] 标志。