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]