htaccess文件中的数学运算符
答
假设你在谈论查询字符串,是的。
重定向到http://example.com/page.php?id=100
你http://example.com/page.php?id=30
会做这样的:
RewriteEngine On
RewriteCond %{QUERY_STRING} id=100
RewriteRule page.php page.php?id=30 [R=301,L]
编辑: AFAIK,这是不可能做到的计算在.htaccess中。将请求发送到一个PHP脚本,然后使用header函数进行重定向(不确定是否使用PHP,但同样的原则适用于其他语言)。
在.htaccess:
RewriteEngine On
RewriteCond %{QUERY_STRING} id=([0-9]*)
RewriteRule page.php calc.php?id=%1 [L]
而且在calc.php:
<?php
$base_url = 'http://example.com/destination.php?id=';
if($_GET['id'] < 100){
$new_id = 30;
}
elseif($_GET['id'] >= 100){
$new_id = 40;
}
$url = $base_url.$new_id;
header("Location: $url");
exit();
+0
id有不同的值,不仅有100个。 – 2010-10-17 04:35:24
什么部分是数学表达式?将id = 100的查询字符串映射到id = 30的查询字符串作为@bradym的答案是简单的模式匹配和替换。一个数学表达式将映射其中id = X的查询字符串,对于100到1000范围内的所有X,将查询字符串映射为id =(X-70)。 – Hitesh 2010-10-16 22:09:42
否,id将具有不同的值,介于1到n之间。这就是为什么我说数学表达。 – 2010-10-17 04:34:53
我用了RewriteMap。 – 2010-10-30 05:58:47