Mod-Rewrite:使用QSA标志

时间:2016-02-19 13:15:35

标签: php .htaccess mod-rewrite

我正在尝试传递参数并使用PHP中的GET函数对已使用mod重写重写的URL,这是来自PHP: GET Variables on Mod Rewritten URL的后续问题。

这就是我现在所拥有的:

RewriteRule ^search/$  ?action=search [L,QSA]

我希望网址仅显示为search/?q=test&p=1而不是search/?action=search&q=test&p=1这是上述重写规则给我的,有没有办法告诉它忽略规则上的第一个参数或忽略特定参数?

RewriteRule ^search/?q=([^/]+)&p=([0-9])$ ?action=search&q=$1&p=$2 [L,QSA]

1 个答案:

答案 0 :(得分:1)

您可以使用以下规则与%{THE_REQUEST}变量匹配完整的请求行:

RewriteCond %{THE_REQUEST} /search/\?action=[^&]+q=([^&]+)&p=([^&\s]+)$ [NC]
RewriteRule ^ /search/?q=%1&p=%2 [NC,L,R]

这将重定向

  • 行动= FOO&安培; Q =栏&安培; P = 1

  • Q =&巴安培; P = 1

然后将重写以下规则:

  • Q =&巴安培; P = 1

到其原始位置

  • 行动= FOO&安培; Q =栏&安培; P = 1

    RewriteRule ^ search / $?action = search [L,QSA]