Mod rewrite 代替请求重写规则
site.com/link?p=2 给$\u GET['p']==2,即使我已经做了 site.com/link 改写为 site.com/index.php?page=link 所以,我试图替换site.com/link?p=2 使用site.com/link&p=2Mod rewrite 代替请求重写规则,mod-rewrite,Mod Rewrite,site.com/link?p=2 给$\u GET['p']==2,即使我已经做了 site.com/link 改写为 site.com/index.php?page=link 所以,我试图替换site.com/link?p=2 使用site.com/link&p=2 RewriteEngine on RewriteRule (.*)\?(.*) $1\&$2 RewriteCond %{REQUEST_URI} !\....$ RewriteRule ^(.*)$ /index.
RewriteEngine on
RewriteRule (.*)\?(.*) $1\&$2
RewriteCond %{REQUEST_URI} !\....$
RewriteRule ^(.*)$ /index.php?p=$1
它不起作用
RewriteRule
无法看到左侧的查询字符串(?
及其后面的任何内容);它只在URL的路径部分匹配
但好消息是,你可能需要做的就是:
RewriteEngine on
RewriteCond %{REQUEST_URI} !\....$
RewriteRule ^(.*)$ /index.php?p=$1 [QSA]
QSA
选项Query String Add告诉您的RewriteRule添加到查询字符串中,而不是替换它(默认行为,这无疑提示了整个问题)。RewriteRule
无法看到左侧的查询字符串(?
及其后的任何内容);它只在URL的路径部分匹配
但好消息是,你可能需要做的就是:
RewriteEngine on
RewriteCond %{REQUEST_URI} !\....$
RewriteRule ^(.*)$ /index.php?p=$1 [QSA]
QSA
选项Query String Add告诉您的RewriteRule添加到查询字符串中,而不是替换它(默认行为,这无疑提示了整个问题)。谢谢!你知道为什么会这样吗?没有确切的解释,但我猜,mod_rewrite
的设计师们觉得,一方面,如果没有重写查询字符串所带来的神秘感,它已经足够复杂得令人难以置信了,另一方面,重写查询字符串几乎没有必要,因为它们可以被接收它们的脚本随意重新解释。谢谢!你知道为什么会这样吗?没有确切的解释,但我猜,mod_rewrite
的设计师们觉得,一方面,如果没有重写查询字符串所带来的神秘感,它已经足够复杂得令人难以置信了,另一方面,重写查询字符串几乎没有必要,因为它们可以由接收它们的脚本随意重新解释。