替换?请求使用RewriteRule

时间:2009-08-27 16:25:11

标签: mod-rewrite

site.com/link?p=2

给$ _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.php?p=$1

它不起作用!

1 个答案:

答案 0 :(得分:3)

RewriteRule无法在左侧看到查询字符串(?及其后的任何内容);它只匹配URL的路径部分。

但好消息是,您可能需要做的就是:

RewriteEngine on

RewriteCond %{REQUEST_URI} !\....$
RewriteRule ^(.*)$ /index.php?p=$1 [QSA]

QSA选项,查询字符串添加,告诉您的RewriteRule添加到查询字符串而不是替换它(默认行为,无疑提示整个问题)。