部署在AWS上的Laravel应用除首页外路由无法访问的解决方案
解决AWS上Laravel非首页路由404的问题
1. 确认mod_rewrite模块已启用
AWS默认Apache环境可能未开启rewrite模块,执行以下命令启用并重启服务:
sudo a2enmod rewrite sudo systemctl restart apache2
2. 修正Laravel部署路径配置
大部分此类问题源于未将Laravel的public目录设为Apache根目录:
- 将完整Laravel项目放置在非网页根目录,比如
/var/www/laravel-app - 打开Apache虚拟主机配置文件(通常是
/etc/apache2/sites-enabled/000-default.conf),修改DocumentRoot指向项目的public文件夹,并配置目录权限:
<VirtualHost *:80> ServerName your-domain.com DocumentRoot /var/www/laravel-app/public <Directory /var/www/laravel-app/public> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
修改完成后重启Apache:
sudo systemctl restart apache2
3. 调整.htaccess规则(可选)
如果上述步骤无效,尝试修改public/.htaccess中的最终路由转发规则:
将原规则:
RewriteRule ^ index.php [L]
替换为:
RewriteRule ^(.*)$ index.php/$1 [L]
或者适配Apache 2.4+的写法:
RewriteRule ^ index.php [L,QSA]
4. 清除Laravel缓存
部署新环境后需清除路由和配置缓存,避免旧缓存导致路由失效:
cd /var/www/laravel-app php artisan route:clear php artisan config:clear
5. 修复文件权限
确保Laravel的核心读写目录拥有Apache进程可访问的权限:
sudo chown -R www-data:www-data /var/www/laravel-app/storage sudo chown -R www-data:www-data /var/www/laravel-app/bootstrap/cache sudo chmod -R 755 /var/www/laravel-app/storage sudo chmod -R 755 /var/www/laravel-app/bootstrap/cache
内容的提问来源于stack exchange,提问作者Khandokar Nafis Jaman
相关产品推荐
相关产品推荐

