2011-08-31 78 views
0

我覺得我真的很接近,但我無法完全理解Apache RewriteRule的正常工作。如何創建請求URL有查詢字符串的RewriteRule

我有一個網址,例如http://mysite.com/product.php?view=true&ID=123,我想重定向到http://mysite.com/some-page。但是如果產品ID = 456,那麼我想重定向到http://mysite.com/some-other-page

因此,我不需要爲我的目標URL保留查詢字符串,但是我在意它在請求中等於什麼,因爲這將決定我將用戶重定向到哪裏。我一直在努力試圖瞭解如何使用mod_rewrite %{QUERY_STRING}參數,但我無法讓它工作。

在此先感謝您的幫助!

回答

0

像這樣:

RewriteEngine On 

RewriteCond %{QUERY_STRING} =view=true&ID=123 
RewriteRule ^product\.php$ /some-page? [R=301,L] 

RewriteCond %{QUERY_STRING} =view=true&ID=456 
RewriteRule ^product\.php$ /some-other-page? [R=301,L] 
  1. 你需要匹配^product.php以及查詢字符串。我確實匹配FULL EXACT查詢字符串(view=trueID=123需要以EXACT順序出現)。如果您只需要部分匹配(例如,僅限ID=123),則用ID=123替換=view=true&ID=123

  2. 注意?在新URL的末尾 - 這是爲了擺脫現有的查詢字符串。沒有它/product.php?view=true&ID=123將被重定向爲/some-page?view=true&ID=123

  3. 我已使用301永久重定向。您可能希望將其更改爲302或其他任何您認爲更適合您的重定向代碼。

  4. 這是要放在網站根文件夾中的.htaccess。如果放置在其他地方可能需要一些小的調整。

+0

@Mike這是否適合你? – LazyOne

相關問題