2010-10-16 5 views
3

Можно ли использовать математические операторы в файле .htaccess? например, я хочу перенаправить страницу с id = 100 на страницу с id = 30?математических операторов в файле htaccess

+0

Какую часть представляет собой математическое выражение? Сопоставление строки запроса, где id = 100, с строкой запроса с id = 30, на которую отвечает @bradym, - это простое сопоставление и подстановка шаблона. Математическое выражение будет отображать строку запроса, где id = X в строку запроса с id = (X-70) для всех X в диапазоне от 100 до 1000. – Hitesh

+0

no, id будет иметь разные значения от 1 до n. поэтому я сказал математическое выражение. –

+1

Я сделал это с помощью RewriteMap. –

ответ

2

Предполагая, что вы говорите о строках запроса, да.

Перенаправление 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] 

Edit: 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. –