我有一个自定义PHP应用程序,它遵循基本的MVC开发模式。应用程序目录结构如下:
admin/
default/
index.php
在admin中是另一个index.php(它是如何处理对/ admin的请求)。
在apache中,这可以通过在每个目录(admin和doc root)中放置.htaccess文件来设置重写并且应用程序正常工作。在NGINX中,它看起来并不那么简单。
我可以通过在我的nginx.conf中使用它来获得基本的“默认”应用程序:
if (!-e $request_filename)
{
rewrite ^(.+)$ /index.php?path=$1 last;
}
(我们在vhost上运行,所以我无法引用位置/或者我得到重复的规则错误。)
这使前端应用程序工作,但当我尝试访问应用程序的/ admin部分登录屏幕加载,但当我尝试提交并尝试命中端点'admin / index / index'时失败,因为我的重写规则不起作用。以下是我在NGINX中重写的内容:
location /admin {
try_files $uri $uri/ /admin/index.php?path=$uri&$args;
}
我认为问题在于传入的$ uri是/ admin / index / index而不是它应该是什么,并且在Apache:/ index / index下。
任何人都可以帮我纠正这些NGINX规则,以便我的应用程序正常运行吗?
提前致谢。
答案 0 :(得分:1)
正如你所说,你传递额外的$ uri。试试这个:
<table>
<tbody>
<tr>
<td class="product"><div class="content-text"></div></td>
<td class="product"><div class="content-text"></div></td>
<td class="product"><div class="content-text"></div></td>
<td class="product"><div class="content-text"></div></td>
<td class="product"><div class="content-text"></div></td>
</tr>
<tr>
<td class="product"><div class="content-text"></div></td>
<td class="product"><div class="content-text"></div></td>
<td class="product"><div class="content-text"></div></td>
<td class="product"><div class="content-text"></div></td>
<td class="product"><div class="content-text"></div></td>
</tr>
.
.
.
</tbody>
</table>