我的文件结构是:
/test/
myfile.php
.htaccess
.htaccess
文件中的代码是:
RewriteEngine On
RewriteBase /test/
RewriteRule (.*)/ $1 [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) myfile.php?q=$1 [QSA]
在myfile.php
内,代码是:
<?php
var_dump($_GET['q']);
?>
因此,当我浏览http://127.0.1.1/test/aaa/bbb/ccc
时,我会在浏览器中获得此输出:
string(15) "aaa/bbb/bbb/ccc"
,这是完美的。
但是当我试图浏览http://127.0.1.1/test/aaa/bbb/ccc/
时,我得到了这个不期望的输出:
string(20) "aaa/bbb/ccc/bbb/ccc/"
任何人都可以解释为什么会这样吗?我也在网络服务器上对此进行了测试。
答案 0 :(得分:1)
*
运算符的默认行为是贪婪(它将匹配尽可能多的字符,其中包括任何尾部斜杠)。尝试添加?
修饰符以切换到非贪婪模式:
RewriteRule (.*?)/ $1 [QSA]