我的网站上有一个简单的仪表板。这是指令:
location /dashboard {
try_files $uri /dashboard/index.php;
}
它适用于/ dashboard之后的所有项目。例如,/ users或/ pages-所有CRUD操作均按预期进行。
/ dashboard上的index.php文件是我的“控制器”。它解析URL,并从那里包含并运行脚本。
例如: / dashboard / group / edit / 123456 可以正常工作,并且我获得了123456组编号的编辑页面。
但是当我从该页面发布到/ dashboard / group / update时,它会提供 /dashboard/group/index.php
因此,在第一个示例中,加载了编辑页面,并且屏幕顶部的url保持不变。
在第二个示例中,NGINX正在更改网址,因此我的脚本无法获取网址部分来完成工作。
我认为这可能与POST有关,但是我还有其他形式的使用POST的问题。
另外,或者可能是一条线索,try_files返回/dashboard/group/index.php,而指令应返回/dashboard/index.php。
是否还有另一个NGINX文件,其中可能包含如此旧的代码,从而覆盖了该域的配置?
我已经呆了几个小时,已经没有想法了。有什么想法吗?
*另外一个线索*
当我浏览到/ dashboard / group / update时,NGINX将按预期显示该页面。只有当我 POST 到该页面时,NGNIX才会将我发送到/dashboard/group/index.php。
再次,至少应该将我发送到/dashboard/index.php,而不是/dashboard/group/index.php。
答案 0 :(得分:0)
/dashboard
之后,您不能全部发送邮件:
location /dashboard {
try_files $uri /dashboard/index.php?$uri&$args;
}
OR
location /dashboard {
try_files $uri /dashboard/index.php?$query_string;
}
Nginx文档:https://nginx.org/en/docs/http/ngx_http_core_module.html#try_files
答案 1 :(得分:0)
代替
location /dashboard {
try_files $uri /dashboard/index.php;
}
尝试
location /dashboard {
index index.php; #adding this may work alone
try_files $uri /dashboard/index.php?$uri;
}
答案 2 :(得分:0)
我得出的结论是我有一个缓存问题。 location指令适用于我尚未访问的所有项目。
因此,如上所述,我的配置可以正常工作。
我只需要弄清楚如何清除我的缓存(我看不到它在NGINX中没有设置!)
谢谢所有帮助过的人!