【问题标题】:Slash after script name in URLURL 中脚本名称后的斜线
【发布时间】:2013-09-15 01:17:29
【问题描述】:

我自己的网站有一个奇怪的错误:我可以在 URL 末尾添加任何带有斜线的内容,并且它不会显示 404 错误,它工作正常。例如:

  1. 正常网址:http://site.com/path/index.php

  2. 我把“/aaa.php”放在最后:http://site.com/path/index.php/aaa.php - 它显示了正常的 URL(如 1)。

这是什么?如何消除这种行为?我想在第二种情况下看到 404 错误。

Apache/2.2.24 (FreeBSD) PHP 5.4.10

【问题讨论】:

  • 这是 PHP 的正常行为。这不是错误。
  • @Quentin,谢谢你的信息!你知道为什么在 PHP 中添加了这种行为吗?是否可以禁用它?
  • @Prix — 我刚刚在我的服务器上禁用了多视图,并且根本没有重写规则。仍然有效。
  • @Quentin AFAIK 当MultiViews 被启用时,它会尝试将您的 URL 转移到最接近会产生上述行为的文件。
  • @BArtWell 如果您想阻止这种情况,可以使用 mod_rewrite 方法,但这取决于您是否已经有任何其他 .htaccess 文件和规则。如果您对此感兴趣,请告诉我。

标签: php apache


【解决方案1】:

这是(几乎)每个支持服务器端脚本(如 PHP 和其他)的网络服务器的默认行为。 您可以使用 PHP 进行尝试,在这种情况下检查 $_SERVER["REQUEST_URI"] 是否与 $_SERVER["SCRIPT_NAME"] 匹配,但仅当您不使用 URL 重写时才有效。 正如 Prix 指出的那样,您还可以禁用 MultiViews 选项。

【讨论】:

  • 网址中没有?,因此没有查询字符串。
  • @Quentin 你知道你可以让 htaccess 文件将文件后的所有内容转换为 GET 值吗?
  • 好吧,你是对的。它不会出现在 QUERY_STRING 中。我会更正我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 2012-11-08
  • 2011-02-28
相关资源
最近更新 更多