2016-02-19 37 views
0

我試圖通過參數並在PHP中使用GET函數對已使用mod重寫進行了重寫的URL,這是來自PHP: GET Variables on Mod Rewritten URL的後續問題。Mod-Rewrite:使用QSA標誌時忽略/排除參數

這是我目前:

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

我想的URL,僅顯示爲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] 
+0

查詢字符串心不是一部分。 – starkeen

回答

1

您可以使用%{THE_REQUEST}變量以下規則來匹配完整的請求行:

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

這將重定向

  • 行動= foo的& Q = bar & p = 1

  • Q =酒吧& P = 1

然後將下面的規則將改寫:?

  • Q =酒吧& P = 1

到其原始位置

  • ?行動= FOO & Q =酒吧& P = 1

    重寫規則^搜索/ $?動作=搜索[L,QSA]匹配在重寫規則的