这是我第一次使用 PHP/MVC 架构并且
问题是错误 404。我正在使用带有 php 的 MVC 架构。
这个过程应该是这样的: 1.Router获取当前URL以及使用的方法
$\_SERVER\['REQUEST_URI'\]
$\_SERVER\['REQUEST_METHOD'\]
2.路由器获取当前URL的特定函数。所述函数在 PUBLIC 中的 index.php 上定义为项目的所有 URL 3.路由器调用该函数。这些功能位于控制器中。
call_user_func
这只适用于主 URL(在 PUBLIC 的 index.php 中定义为“/”)。 每当我想访问任何其他 URL 时,都会收到 404 错误。就像服务器无法使用 VIEWS 访问文件夹一样。
但我知道它是有效的,因为 VIEW index.php 正在渲染 URL '/'。我尝试交换 URL 调用的函数,以查看类或其他任何内容是否有问题,但它也有效(例如:我从 URL '/' 调用函数“contact”,而不是函数“index”我得到了正确的“/contact”视图)
我确信我的项目正在我的本地主机上运行。 我什至将其部署在另一台 CPanel 上,它工作正常,区别在于另一个是 VPS,而有问题的是共享主机。
据我了解,问题应该是以下之一: -htaccess 文件 -php ini -作曲家自动加载不起作用
我的 php 版本是正确的,我的数据库工作正常。
我能解释我的问题吗?请发送帮助!
这是我在 PUBLIC 上的 Router 和 index.php 代码
没关系,我已经解决了 如果有像我这样的菜鸟遇到同样的问题...我用 htaccess 文件解决了
应该是这样的
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
它应该与你的index.php(PUBLIC文件夹)位于同一文件夹中
我也面临着同样的问题,但无法解决。我无法访问其他文件。这是我的项目目录
project/
├── public/
│ ├── .htaccess
│ ├── index.php
│ └── ... (other public files)
├── views/
│ └── error_404.php
│ └── ... (other files)
├── controllers/
│ └── ... (controller files)
├── models/
│ └── ... (model files)
└── router.php
这是我的 htaccess 文件:
Options -Indexes
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
ErrorDocument 404 ../views/error_404.php
</IfModule>