偽靜態規則中RewriteCond如何取得多個參數?

WBOY
發布: 2016-09-01 00:20:12
原創
1482 人瀏覽過

現有以下表單規則:
/index.php?m=search&c=index&s=1&t=1&k=關鍵字
想透過偽靜態的形式將路徑轉發為
/search?s=1&t=1&k=關鍵字

使用下列方式只能取得一個參數值
RewriteCond %{QUERY_STRING} ^k=(.+)$
RewriteRule ^search$ /index.php?m=search&c=index...&k=%1

使用以下方式取得多個參數的話參數的順序是固定的,一旦調換順序就不行了
RewriteCond %{QUERY_STRING} ^k=(.+)&s=(.+)&c=(.+)$
RewriteRule ^search$ /index.php?m=search&c=index...&k=%1&s=%2&c=%3

使用以下方式的話,有安全隱患,不能限定參數的個數
RewriteRule ^search$ /index.php?m=search&c=index [L,QSA]

請教大神們有什麼好的解決方案?

回覆內容:

現有以下表單規則:
/index.php?m=search&c=index&s=1&t=1&k=關鍵字
想透過偽靜態的形式將路徑轉發為
/search?s=1&t=1&k=關鍵字

使用下列方式只能取得一個參數值
RewriteCond %{QUERY_STRING} ^k=(.+)$
RewriteRule ^search$ /index.php?m=search&c=index...&k=%1

使用以下方式取得多個參數的話參數的順序是固定的,一旦調換順序就不行了
RewriteCond %{QUERY_STRING} ^k=(.+)&s=(.+)&c=(.+)$
RewriteRule ^search$ /index.php?m=search&c=index...&k=%1&s=%2&c=%3

使用以下方式的話,有安全隱患,不能限定參數的個數
RewriteRule ^search$ /index.php?m=search&c=index [L,QSA]

請教大神們有什麼好的解決方案?

k s c 等參數仍作為正規匹配,如:

<code>RewriteCond %{QUERY_STRING} ^([a-z]+)=(.+)&([a-z]+)=(.+)&([a-z]+)=(.+)$
RewriteRule ^search$ /index.php?m=search&c=index...&%1=%2&%3=%4&%5=%6</code>
登入後複製
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!