1

这是我的 .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。我如何禁用该额外部分的显示。我不想重命名我的所有目录。

谢谢,亚历克斯

4

2 回答 2

2

发生这种情况是因为打开了目录斜线,您需要将其关闭:

DirectorySlash Off

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

于 2013-11-04T06:49:13.037 回答
0

避免重写目录:

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

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

于 2013-11-04T06:48:05.303 回答