如果目录存在,则mvc .htaccess禁用更改URL

时间:2013-11-04 06:45:54

标签: apache .htaccess mod-rewrite

这是我的.htaccess文件代码:

RewriteEngine On
RewriteCond %{REQUEST_URI} !index\.php
RewriteRule ^(.+)$ index.php?url=$1 [NC,L]

它将url作为参数发送到index.php。我遇到的问题是当我输入诸如site.com/admin之类的目录时,一切正常,但是地址栏中的url会更改为site.com/admin/?url=admin。如何禁用显示的额外部分。我不想重命名我的所有目录。

谢谢, 亚历

2 个答案:

答案 0 :(得分:2)

这是因为目录斜杠已打开,您需要将其关闭:

DirectorySlash Off

只要您将直接存在的目录路由到index.php文件,就可以将其关闭。它的作用是将对存在的目录的请求重定向到没有尾部斜杠到具有尾部斜杠的相同事物。问题是mod_dir和mod_rewrite都应用于同一个请求,因此应用mod_dir重定向,然后mod_rewrite破坏URI,然后重定向在处理管道的末尾被触发。 / p>

答案 1 :(得分:0)

避免重写目录:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index\.php
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

还要确保系统中没有任何其他冲突的.htaccess。