如何在.rewriteRule函数中进行算术运算?

时间:2013-11-23 15:55:01

标签: .htaccess mod-rewrite url-rewriting

这可以在.rewriteRule函数中进行算术运算吗?我想重写我的网址。

从此

  

/view.php?id=2

  

/?p = 6(id * 2 + 2)

2 个答案:

答案 0 :(得分:0)

您可以使用重写映射来调用外部程序,但在重负载下它会慢一点。重写映射只能在服务器的配置或vhost配置中定义,不能在htaccess文件中定义。但它可以在htaccess文件中使用。

所以你有一个简单的脚本从stdin读取并做你的数学运算:

#!/usr/bin/perl
$| = 1; # Turn off I/O buffering
while (true) {
    print <STDIN> * 2 + 2;
}

然后声明映射:

RewriteMap math prg:/path/to/script.pl

然后使用文档根目录中的htaccess文件中的映射:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=([0-9]+)
RewriteRule ^view\.php$ /?p=${math:%1} [L]

答案 1 :(得分:0)

要将 http://example.com/view.php?id=2 重定向到 http://example.com/?p=6,您可以这样做:

在 .htaccess 中:

RewriteEngine On
RewriteCond %{QUERY_STRING} id=([0-9]*)
RewriteRule view.php calc.php?id=%1 [L]

在 calc.php 中:

<?php  
$base_url = 'http://example.com/?p=';
$id = $_GET['id'];
$new_id = $id * 2 + 2;

$url = $base_url.$new_id;

header("Location: $url"); 
exit();