2013-11-23 31 views
0

這是可能做在.rewriteRule函數中的算術運算?我想重寫我的網址。如何在.rewriteRule函數中進行算術運算?

從這

/view.php?id=2

/P = 6(ID * 2 + 2)

+1

這超出了Apache的能力範圍,應該可以在PHP中完成。你想做什麼? –

+0

我想重寫我的舊網址到我的新WordPress博客。我無法更改WordPress上的ID。 –

+1

而你所有的新ID都遵循模式'(id * 2 + 2)'?真? (一般的方法是明確地逐個重定向博客文章,因爲ID通常不匹配) –

回答

0

您可以使用重寫映射來調用外部程序,但在重負載下會稍慢一點。重寫映射只能在服務器的配置或虛擬主機配置中定義,不在htaccess文件中。但它可以在htaccess文件中使用。

所以,你有一個簡單的腳本,從標準輸入讀取並執行你的數學:

#!/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]