2017-09-05 63 views
1

我想問如何將htaccess文件中的查詢字符串參數從同一個url重定向到沒有查詢字符串參數的相同url。例如,如果我的網址是www.example.com/abc.php?cid=5&scid=10,我想將其重定向到www.example.com/abc.php在htaccess文件中的URL重定向

請注意,url是相同的,只是查詢字符串參數已在重定向中刪除。我已經用單個查詢字符串爲urls寫了htaccess文件代碼,但有多個參數沒有重定向。

這裏是我的單個參數代碼按預期工作:

RewriteCond %{QUERY_STRING} cid=7$ 
RewriteRule (.*) /contact-us.php? [R=301,L] 

它重定向contact-us.php?cid=7頁面contact-us.php

但是當我exteding多個參數的代碼並不重定向。以下是我已經寫在這種情況下:

RewriteCond %{QUERY_STRING} cid=9$ 
RewriteCond %{QUERY_STRING} scid=14$ 
RewriteRule (.*) /stakeholders.php? [R=301,L] 

這一個應該stakeholders.php?cid=9&scid=14頁面重定向到stakeholders.php頁。有人能告訴我第二個代碼有什麼問題嗎?

我也GOOGLE了它,但幾乎所有的結果都是關於重定向從一個網址到另一個網址不是相同的URL與查詢字符串參數刪除。謝謝。

+0

您可能會在這裏找到答案! https://stackoverflow.com/questions/44925043/beautify-the-url-for-api-by-htaccess-and-php – JaTurna

回答

1

您需要查詢連接成一個條件,像這樣:

RewriteEngine On 
RewriteCond %{QUERY_STRING} cid=9&scid=14 [NC] 
RewriteRule ^(.*)$ http://www.example.com/stakeholders.php? [R=301,NC,L] 

這會爲cid=9&scid=14特定查詢的工作,如果你想做到這一點對於任何查詢,那麼你可以使用cid=(.+)&scid=(.+)代替。

重寫URL末尾的?會阻止原始查詢出現在其末尾,並使用301重定向執行更改。