我觉得我非常接近,但我无法让这个Apache RewriteRule正常工作。
我有一个类似http://mysite.com/product.php?view=true&ID=123
的网址,我想重定向到http://mysite.com/some-page
。但如果产品ID = 456,那么我想将其重定向到http://mysite.com/some-other-page
。< / p>
所以我不需要保留我的目标网址的查询字符串,但我确实关心请求中的等价,因为这将决定我将用户重定向到的位置。我一直在努力尝试理解如何使用mod_rewrite %{QUERY_STRING}
参数,但我无法让它工作。
提前感谢您的帮助!
答案 0 :(得分:1)
这应该有所帮助。
RewriteCond %{QUERY_STIRNG} id=456
RewriteRule .* /some-other-page? [R,L]
有关Manipulating the Query String的更多信息。
答案 1 :(得分: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]
您需要匹配^product.php
以及查询字符串。我确实匹配了完整的查询字符串(view=true
和ID=123
都需要以精确的顺序出现)。如果您只需要部分匹配(例如仅限ID=123
),请将=view=true&ID=123
替换为ID=123
。
请注意新网址末尾的?
- 这是为了摆脱现有的查询字符串。如果没有,/product.php?view=true&ID=123
将被重定向为/some-page?view=true&ID=123
。
我使用过301永久重定向。您可能希望将其更改为302或您认为更适合您的其他重定向代码。
这是放在网站根文件夹中的.htaccess中。如果放在其他地方,可能需要进行一些小的调整。