2012-04-03 116 views
0

我想不通,爲什麼下面不工作阿帕奇ModRewrite模式沒有存儲

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: 

基本上,圖案的重寫規則內的認可,而不是參數foobar的。

注意:shell腳本沒有任何問題。相反,如果我把它像這樣${foobar:test:abc123}輸出爲「test:abc123

回答

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] 

可以工作。