化妆的.htaccess防止导航到目录

问题描述:

我有这个.htaccess化妆的.htaccess防止导航到目录

DirectorySlash On 
RewriteEngine On 

RewriteRule /?\.htaccess$ - [F,L] 

# Remove trailing slash 
RewriteRule ^(.*)/$ /project/$1 [R,L] 

# Map every link to index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !^/project/index.php.*$ 
RewriteRule ^(.*)$ /project/index.php?___MYROUTER=$1 [QSA,END] 

,但是当我浏览到一个目录中我旁边的.htaccess文件中像css在浏览器中的文件夹,利用该地址:

http://localhost/project/css

那么我的地址将改为:

http://localhost/project/css?___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css&___MYROUTER=css

,并在Firefox是这样的结果:

的网页没有正确重定向

的Firefox已经检测到服务器重定向对 请求这个地址的方式永远不会完成。

This problem can sometimes be caused by disabling or refusing to accept cookies. 

,但这些都没有指向现有的目录其他地址,会确定这样的:

http://localhost/project/mycontroller

这个地址是确定的,并不会改变任何东西否则

我的有什么问题?

这是我的log文件

这是因为Apache是​​在目录中的前mod_dir模块已经完成执行后增加一个尾部斜杠。

您可以使用单独的规则自行在目录前面添加尾部斜线。

DirectorySlash On 
RewriteEngine On 

RewriteRule /?\.htaccess$ - [F,L] 

# Remove trailing slash for non directories 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /project/$1 [R,L] 

# add a trailing slash to directories 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301,NE] 


# Map every link to index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !^/project/index\.php [NC] 
RewriteRule ^(.*)$ project/index.php?___MYROUTER=$1 [QSA,END] 
+0

你测试了吗?我已经测试过它,但它不能正常工作。目录问题已消失,但对于目录“address?___ MYROUTE =/css”仍然显示,我希望此参数被隐藏 – Omid

+0

清除浏览器缓存后尝试更新我的答案。 – anubhava

+0

如果您可以通过TeamViwer来参观我的apache,我该如何直接与您联系?请从这里节省我:-(这是我的电报ID http://t.me/omidgfx – Omid