2010-10-16 72 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