php - Laravel 是 "listening"到 index.php URL 中任意位置的字符串

标签 php url laravel laravel-5

我有一个 Laravel 5 项目,其中设置了路由以及一个自定义 404 页面(主要用于丢失/不正确的“页面”)。

所以基本上,如果我打开任何现有路由,我都会得到正确的输出,并且每个其他 URL 都显示 404:

  • project.com/login - 很好,登录页面

  • project.com/ghdkfgl - 404

这看起来很清楚并且似乎按预期工作。因此,我在斜线后添加的任何内容都会打开实际的现有页面或 404 页面。

除非我在 URL 中的任何位置放置了“index.php”。在这种情况下,Laravel 出于如下原因执行请求:

  • project.com/jhdfkds/index.php/login - 打开登录页面(CSS 和其他资源因为路径而消失了,但很清楚)。

  • project.com/kfhjdsg/index.php/fkdhsg - 打开 404(但 CSS 和其他资源也未加载)。

我确定这两个都应该打开 404,因为我的项目中没有这样的路由。

我还在 Laravel 文档网站上检查了相同的行为(我假设它是基于 Laravel 构建的)。

这可能是什么原因造成的?如何解决?

为什么 Laravel 甚至会考虑 URL 中间的“index.php”?

这与 .htaccess 文件有什么关系吗? (虽然我没有编辑它)

最佳答案

问题出在 Symfony 内部 Request类以及它如何确定基本 URL。基本上它假设如果您有类似 aaa/index.php 的请求您当前正在运行的脚本(名为 index.php )位于目录 aaa 内需要aaa/index.php作为基本 URL。
稍后它将从实际请求 URI 中剥离。

我用 pull request 修复了这个不需要的行为目前正在审查中。合并后我会尽快更新这篇文章。

关于php - Laravel 是 "listening"到 index.php URL 中任意位置的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29666172/

相关文章:

php - apache php > 用户请求

ruby-on-rails - 在 emacs : utf-8 problem 中使用 url elisp 包创建 POST

android - 从 Android 模拟器访问 laravel 代客上的本地主机

Laravel 之刃 : New line appends space to former echo

php - 无法在 Laravel 中获取 app.scss 的完整文件

php - mysql_num_rows() 错误

php - 使用多个嵌套 JSON 键进行 DynamoDB 扫描 (PHP)

php - getenv() 在 CodeIgniter 4 中有时会返回 false。为什么?

asp.net-mvc - 如何在 ASP.NET MVC 中更改 Url.Encode 字符替换策略?

regex - 检查 URL 时更改正则表达式以允许 IP 地址?