Laravel部署至EC2 AMI服务器后除首页外均报NOT FOUND求助
看起来你遇到了Laravel部署到AWS EC2 AMI后常见的路由重写问题——首页能访问但其他页面返回404,这大多是Apache的URL重写配置没到位导致的,我给你几个具体的解决步骤:
启用mod_rewrite模块
Laravel的路由依赖Apache的mod_rewrite模块实现URL重写,首先得确认这个模块是否开启。在EC2服务器终端执行以下命令:sudo a2enmod rewrite执行完成后重启Apache服务让配置生效:
sudo systemctl restart httpd修改httpd.conf的AllowOverride设置
你当前的httpd.conf配置里,<Directory "/var/www/nnid/public/">下的AllowOverride None会直接阻止Laravel public目录下的.htaccess文件生效,而这个文件正是处理路由重写的关键。把这部分配置改成:<Directory "/var/www/nnid/public/"> AllowOverride All Require all granted </Directory>修改保存后,记得再次重启Apache:
sudo systemctl restart httpd确认public目录下的.htaccess文件存在且配置正确
检查Laravel项目的public目录里是否有.htaccess文件,默认的正确配置应该是这样的:<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>如果这个文件不存在,手动创建它,同时确保文件权限正确,让Apache能够读取:
sudo chown apache:apache /var/www/nnid/public/.htaccess sudo chmod 644 /var/www/nnid/public/.htaccess核对APP_URL配置
你在config/app.php里的url设置没问题,但也要同步检查项目根目录下的.env文件,确保APP_URL和实际访问地址一致:APP_URL=http://52.67.251.19
如果做完以上步骤还是有问题,可以查看Apache的错误日志(路径一般是/var/log/httpd/error_log),里面会有更详细的错误信息,帮你进一步定位问题。
内容的提问来源于stack exchange,提问作者Marcello Pato

