【发布时间】:2015-10-20 10:55:18
【问题描述】:
我正在使用 Laravel 5.1。我的.htaccess 文件中有这个(与默认值相比,这些只是文件中的更改):
Options -Indexes
ErrorDocument 403 /error-403
我的public/ 目录中还有一个js/ 目录。
当我尝试在浏览器中访问/js/ 目录时,我没有打开/error-403 路由,正如我所料。相反,我触发了 Laravel 的 404 HTTP 错误处理程序(我从 Laravel 获得了 404 页面),但我不明白为什么。
当我直接在浏览器中打开/error-403 时,相应的视图可以正常打开。以下是我在 PHP 中为这两个请求看到的一些有趣的服务器变量。
/error-403:
"REDIRECT_STATUS" => "200"
"REDIRECT_URL" => "/error-403"
"REQUEST_METHOD" => "GET"
"REQUEST_URI" => "/error-403"
/js/:
"REDIRECT_REDIRECT_REQUEST_METHOD" => "GET"
"REDIRECT_REDIRECT_STATUS" => "403"
"REDIRECT_STATUS" => "403"
"REDIRECT_URL" => "/error-403"
"REQUEST_METHOD" => "GET"
"REQUEST_URI" => "/js/"
在我看来,Apache 似乎将请求重定向到 Laravel,但 Laravel 并没有选择 URL /error-403,而是选择了不存在路由的 URL /js/,然后抛出 404。
有没有其他人遇到过类似的问题?我在这里想念什么?如何设置 Laravel 以便 Apache(及其 ErrorDocument 语句)重定向到 Laravel 中定义的路由?而“如何”,我的意思是我怎样才能以适当的方式做到这一点,所以它不是一个黑客。我想我可以创建一个自定义中间件来检查这些服务器变量并更正路由,但这似乎很脏,我不知道我是否在这里遗漏了什么。
【问题讨论】:
标签: php apache .htaccess laravel-5