0

我无法弄清楚为什么以下不起作用

RewriteCond ${foobar:test:$1} ^
RewriteRule ^/?(.*)$ /check.php?url=$1 [L]

foobar是一个程序(简单的 bash 脚本),我在其中写入文件以查看输入是什么。check.php是一个简单的 php 脚本,它显示GET. 这是我将正则表达式 ( $1) 传递给 shell 脚本和 php 脚本时得到的结果:

url                          check.php             foobar

www.example.com/index.html   index.html            test:
www.example.com/index.php    index.php             test:
www.example.com/test.html    test.html             test:

基本上,模式在 RewriteRule 中被识别,但不是 foobar 的参数。

注意:shell 脚本没有任何问题。相反,如果我这样称呼它,${foobar:test:abc123}则输出为“ test:abc123

4

1 回答 1

1

在我看来,我的观点是:

RewriteCond ${foobar:test:$1} ^

第一个$1是无意义的,因为$1应该引用以前的表达式,例如:

RewriteRule ^/?(.*)$ /check.php?url=$1 [L]

所以我不明白这是如何工作的,如果有什么工作,那就……奇怪了。

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritemap

也许是这样的:

RewriteRule ^(.*)$ ${foobar:test:$1} [R,L,NC]

可以工作。

于 2012-04-04T06:23:07.570 回答