本地全新安装Magento 2后访问出现404错误如何解决
Magento 2 本地访问404修复方案
你之前尝试替换根目录.htaccess、移动pub/index.php到根目录的操作属于非官方的错误修改,会破坏Magento的路径解析逻辑,先把所有改动过的文件还原到安装完成后的初始状态,再按以下步骤操作:
核心问题说明
Magento 2.4及以上版本的安全设计要求Web服务的运行根目录必须指向安装路径下的/pub文件夹,直接指向Magento项目根目录会因为路由规则不匹配触发404错误。
修复步骤
1. 还原被改动的文件
- 将移动到项目根目录的
index.php移回/pub目录 - 分别恢复项目根目录、
/pub目录下的.htaccess文件为安装包自带的原始版本,不要做跨目录替换
2. 配置Web服务根路径
根据你本地使用的Web环境选择对应配置方式:
Apache环境(XAMPP/WAMP/PHPStudy等集成环境通用)
- 打开Apache的虚拟主机配置文件
httpd-vhosts.conf,修改对应Magento站点的配置,将文档根指向/pub目录,参考配置如下:
<VirtualHost *:80> ServerName localhost # 把路径替换为你本地Magento的实际安装路径,路径斜杠用正斜杠 DocumentRoot "D:/www/magento/pub" <Directory "D:/www/magento/pub"> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> </VirtualHost>
- 打开Apache主配置文件
httpd.conf,确认URL重写模块已开启,找到以下配置行删除行首的#注释:
LoadModule rewrite_module modules/mod_rewrite.so
- 重启Apache服务,直接访问
http://localhost即可进入Magento,不需要加/magento路径后缀。
如果你需要保留
localhost/magento的访问形式,不需要调整全局虚拟主机配置,在Magento项目根目录的原始.htaccess中加入以下重写规则即可,无需移动任何项目文件:<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} !^/pub/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ pub/$1 [L] </IfModule>
Nginx环境
打开Nginx站点配置文件,将根路径指向Magento的/pub目录,核心配置参考:
server { listen 80; server_name localhost; # 替换为你本地的实际Magento安装路径 root D:/www/magento/pub; index index.php; location / { try_files $uri $uri/ /index.php?$args; } # PHP解析、静态资源缓存规则按你本地环境的常规配置填写即可 }
修改完成后重启Nginx与PHP服务。
3. 残留问题排查
如果完成以上配置后仍报404,依次检查以下项:
- 本地PHP版本与安装的Magento版本匹配:Magento 2.4.0-2.4.3要求PHP 7.4,2.4.4-2.4.6要求PHP 8.1,版本不匹配会导致路由解析异常
- 执行命令清空缓存:在Magento项目根目录打开命令行,依次执行
php bin/magento cache:clean php bin/magento setup:static-content:deploy -f - 给Magento整个项目目录开放Users组的读写权限,避免Windows权限限制导致文件无法读取
- 如果是Composer安装的版本,在项目根目录执行
composer install补全所有缺失的依赖包后重试
内容的提问来源于stack exchange,提问作者Nicolas Gimelli
相关产品推荐
相关产品推荐

