現有如下表單規則:
/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 等參數仍然作為正則匹配,如:
RewriteCond %{QUERY_STRING} ^([a-z]+)=(.+)&([a-z]+)=(.+)&([a-z]+)=(.+)$RewriteRule ^search$ /index.php?m=search&c=index...&%1=%2&%3=%4&%5=%6