2010-10-16 75 views
3

是否可以在.htaccess文件中使用数学运算符? 例如,我想将id = 100的页面重定向到id = 30的页面?htaccess文件中的数学运算符

+0

什么部分是数学表达式?将id = 100的查询字符串映射到id = 30的查询字符串作为@bradym的答案是简单的模式匹配和替换。一个数学表达式将映射其中id = X的查询字符串,对于100到1000范围内的所有X,将查询字符串映射为id =(X-70)。 – Hitesh 2010-10-16 22:09:42

+0

否,id将具有不同的值,介于1到n之间。这就是为什么我说数学表达。 – 2010-10-17 04:34:53

+1

我用了RewriteMap。 – 2010-10-30 05:58:47

回答

2

假设你在谈论查询字符串,是的。

重定向到http://example.com/page.php?id=100http://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