2016-05-22 139 views
0

有一點挑戰。我無法在當前的重寫代碼中添加另一個「過濾器」。我想補充另一個重寫,在該URL的末尾捕捉查詢字符串(如果提供).htaccess網址重寫挑戰與查詢

例..

example.com/search/?sort=newest --> example.com/search.php?sort=newest 
example.com/search/first?sort=newest --> example.com/search.php?a=first&sort=newest 
example.com/search/first/second?sort=newest --> example.com/search.php?a=first&b=second&sort=newest 
example.com/search/first/second/third?sort=newest --> example.com/search.php?a=first&b=second&c=third&sort=newest 

這是我當前的代碼。

# search without filters 
RewriteRule ^search?$ search/ [NC,L] 

# search with one filter 
RewriteRule ^search/([A-Za-z0-9-+]+)?$ search.php?a=$1 [NC,L] 

# search with two filters 
RewriteRule ^search/([A-Za-z0-9-]+)/([A-Za-z0-9-+]+)?$ search.php?a=$1&b=$2 [NC,L] 

# search with three filters 
RewriteRule ^search/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-+]+)?$ search.php?a=$1&b=$2&c=$3 [NC,L] 
+0

什麼是你的問題? –

+0

那麼,我還沒有想出如何捕獲排序參數,並用get變量將其重定向到php文件。 'example.com/search?sort = newest' 應該重定向到.. 'example.com/search.php?sort = newest' – royjr

回答

1

要保留RewriteRule中的現有查詢字符串,您不需要執行任何操作。

但是,如果你在替換部分自己添加查詢字符串,您需要使用QSA標誌追加以前的查詢字符串

RewriteRule ^search/([A-Za-z0-9-+]+)?$ search.php?a=$1 [NC,L,QSA] 
+0

完美答案,讓我走上正軌,現在完美運作。 – royjr