这可以在.rewriteRule函数中进行算术运算吗?我想重写我的网址。
从此
/view.php?id=2
要
/?p = 6(id * 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();