基于获取值的htaccess重定向

时间:2013-01-23 20:28:24

标签: apache .htaccess rewrite

我想根据网址中检索到的值重定向某些网页。

我有必要用htaccess来做。

例如

http://www.mydomain.com/products.php?id=1040

http://www.mydomain.com/products.php?id=1041

http://www.mydomain.com/products.php?id=1042

如果id值大于1039且小于1501,则apache必须重定向到另一个页面

http://www.mydomain.com/otherpage.html

欢迎一些想法。

先谢谢。

3 个答案:

答案 0 :(得分:1)

尝试:

RewriteCond %{QUERY_STRING} ^id=([0-9]+)
RewriteCond %1 >1039
RewriteCond %1 <1501
RewriteRule ^/?products\.php? /otherpage.html? [L,R=301] 

第一个条件将数字ID分组,通过%1 将其作为反向引用。接下来的两个条件检查此数字ID是否大于1039且小于1501.如果满足所有3个条件,则/products.php的请求将重定向到/otherpage.html。最后的?确保查询字符串不会附加到结尾

答案 1 :(得分:0)

有了这种特定要求,我认为在应用程序级别而不是在Apache中执行重定向是最合适的。只需比较值$_GET['id']并通过header()重定向。

或者您必须编写一个相对复杂的正则表达式来搜索RewriteCond中1040到1500之间的值,因为常规RewriteRule不会对查询字符串进行操作。

答案 2 :(得分:0)

你应该添加这样的东西

AddDefaultCharset UTF-8
Options +MultiViews
RewriteEngine On
RewriteRule condition/ http://www.mydomain.com/otherpage.html [P]

悬停我不确定重定向参数值是多么容易:|