3
是否可以在.htaccess文件中使用數學運算符? 例如,我想將id = 100的頁面重定向到id = 30的頁面?htaccess文件中的數學運算符
是否可以在.htaccess文件中使用數學運算符? 例如,我想將id = 100的頁面重定向到id = 30的頁面?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();
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