我使用内置服务器构建了一个php站点。在使用Apache时,我没有遇到任何问题。
文件夹结构:
应用 - >的index.php
控制器 - > home.php
视图 - > home.php
我让Apache在“/”处成功提供主页,但我访问的任何其他页面返回404.“index.php”内部是“switch($ _SERVER ['REQUEST_URI'])”语句。访问URI,称为控制器,后者又调用视图:
switch ($_SERVER['REQUEST_URI'])
{
case '/':
home_controller::home();
break;
case '/signup':
signup_controller::signup();
break;
}
如果我尝试访问“/ signup”中的“注册页面”,我会收到404.我不确定为什么会这样。我不太了解Apache,但花了很多时间试图解决这个问题。重写没有解决问题,但我可能做错了。任何信息将不胜感激。
修改1 Modrewrite可以解决这个问题,但之前没有。如上所述,我不太了解Apache,所以找到正确的术语可能会让我感到沮丧。
我的PHP程序采用REQUEST_URI并且内置了一个路由器,它与switch语句匹配。我的逻辑是,任何进入Apache的uri都将转向PHP。我没有采取任何措施使“/”正常工作。不知道为什么我需要做一些不同的事情来使“/ signup”工作。
修改2
我解决了这个问题。
try_files $uri /index.php$is_args$args;
我从Apache切换到Nginx并应用上面的行。我实际上有两个问题。第一个是数据库问题阻止应用程序正常运行。另一个是上面缺少的那条线。
这个问题并不重复,因为“漂亮的网址”不是答案。问题是Apache如何在php中路由我已经制作的url。
感谢ippi提供链接!