【发布时间】:2019-08-28 15:05:45
【问题描述】:
我有一个带有 .htaccess 文件的 PHP 项目:
Options FollowSymLinks
RewriteEngine On
RewriteBase "/blog/"
RewriteRule "^([^.?/]+)/?$" "index.php?page=$1" [END,QSA]
我对 url localhost/blog/administration 有一个非常奇怪的问题。这绝对不是由 PHP 文件引起的,因为即使源代码为空也会发生。
我的问题是:当我输入localhost/blog/administration时,地址栏中的URL变成了localhost/blog/administration/?page=administration。在地址栏中输入localhost/blog/administration/(带有斜杠)后不会发生这种情况。
奇怪的是——给定的问题只发生在administration URL 上,而不是home。
可能是什么原因?
免责声明:即使我使用新的浏览器(无缓存)和 index.php 和exit; 在开始时也会发生上述问题...
【问题讨论】:
-
试试这个
RewriteRule "^([^.?/]+)?$" "index.php?page=$1" [END,QSA] -
@NemanjaJeremic 它有什么变化?
/?的目的是接受斜杠,但不需要它。 -
我看到你使用
([^.?/]+)表示每个可能的标志。我假设你只需要在你的 URL 中输入字母。最好使用这样的东西。RewriteRule ^([a-zA-Z]+)$ index.php?page=$1 [NC,L].... 也是的,我在第一条评论中犯了一个错误。因为我没有在你的重写中看到?。我认为这会有所帮助:) -
出于安全原因,如果
mod_dir模块指向真实目录,则在 URI 末尾添加尾部斜杠。/blog/administration/目录中没有index.php吗? -
@anubhava 哦...事实上我有
administration/目录。这可能是真正的原因。谢谢!
标签: php .htaccess mod-rewrite