2011-08-31 103 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