1
sunflyer 2017-12-29 14:16:13 +08:00
/ex/am =》这部分叫 uri
/ex/am?a=123&b=456 =>问号后面的叫 query_string emm,剩下的应该不用说了 |
2
printempw 2017-12-29 14:33:24 +08:00 via Android
你的意思是开启 Nginx URL 重写后 /index.php/ex/am 可以正常访问吗?你的请求确定经过 Laravel 了吗?提示的 Not found 是 Laravel 报的错还是 Nginx 报的错?
稍微看了一下源码(人在外面),Laravel 从 REQUEST_URI 后似乎没有对 index.php 这类 script name 做特殊处理。所以你访问的 /index.php/ex/am 与你定义的路由 /ex/am 应该是**不匹配**的(没验证过,不一定对,手机看源码太痛苦了) https://github.com/laravel/framework/blob/5.5/src/Illuminate/Routing/Matching/UriValidator.php |
3
my101du 2017-12-29 14:39:26 +08:00 via Android
未开启重写,末尾加斜杠。会被 nginx 去找匹配的子目录吧。
|
4
kismetX 2017-12-29 14:39:52 +08:00
你的 nginx 配置有问题吧,就单 http://localhost/能访问吗?
|
5
waibunleung OP @my101du 我没有末尾加斜杠啊
|
6
waibunleung OP @kismetX 关于 网址是 localhost 只是用于方便提问的网址书写,我自己配的 nginx 本地网址是“ w w w .lab.com ”,请不要纠结 localhost 的问题
|
7
waibunleung OP @printempw 你这么一说,是 nginx 报的 404 错误,请求应该没走 laravel,可是为什么 http://localhost/index.php?/ex/am 或者 http://localhost/index.php?/ex/am
这样的请求没有走 laravel 的路由?已经进入入口文件了,路由却没有解析到 另外,根据以上 nginx 的配置,这个 url: http://localhost/ex/am 重写之后真实访问的 url 是怎样的? |
8
waibunleung OP @my101du 我的意思是我没有开启重写,就不会匹配到斜杠那一项吧?
|
9
waibunleung OP @printempw 开启 Nginx URL 重写后 /index.php/ex/am 确实可以正常访问
|
10
medz 2018-01-02 17:58:45 +08:00
@waibunleung 很简单,Laravel 现在是采用 pathinfo 模式的,也就是通过请求路径进行分析路由,你可以开启重写后在 index.php 打印 $_SERVER 你再关闭后打印,你看 `REQUEST_URI` 部分是不一样的。
|
11
waibunleung OP @medz
重写前后,我看到的 REQUEST_URI 是一样的。。。。不知道你有没有试验过 |