Php 使用.htaccess not woking删除拖尾斜线

Php 使用.htaccess not woking删除拖尾斜线,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我的文件结构是: /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($_G

我的文件结构是:

/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
我在浏览器中获得以下输出:

字符串(15)“aaa/bbb/bbb/ccc”
,非常完美

但是当我试图浏览
http://127.0.1.1/test/aaa/bbb/ccc/
我得到了预期之外的输出:

字符串(20)“aaa/bbb/ccc/bbb/ccc/”


有人能解释一下为什么会发生这种情况吗??我也在webserver上测试过这个问题。

操作符的默认行为是贪婪(它将匹配尽可能多的字符,包括任何尾随斜杠)。尝试添加
修改器以切换到非贪婪模式:

RewriteRule (.*?)/ $1 [QSA]

它刚刚停止生成奇怪的链接,但仍然有一个尾随斜杠。输出是
string(12)“aaa/bbb/ccc/”
谢谢,提前谢谢。只是稍微更改了
.htaccess
文件,奇怪的事情又回来了:.htaccess文件的代码:
RewriteBase上的RewriteEngine/test/RewriteRule^(.?/$$1[QSA]RewriteCond%{REQUEST\u FILENAME}-f RewriteRule(.*)myfile.php?q=$1[QSA]