Apache2部署Laravel时.htaccess正确却无法重定向不执行PHP如何解决
Ubuntu Apache2 部署Laravel重定向&PHP不执行问题解决方案
- 启用Apache rewrite模块
重定向规则依赖rewrite模块,默认状态下该模块未开启,执行以下命令启用:sudo a2enmod rewrite
执行完成后重启Apache服务:sudo systemctl restart apache2 - 修改站点配置开放.htaccess规则权限
打开Apache站点配置文件(默认路径为/etc/apache2/sites-available/000-default.conf或者自定义的站点配置文件),找到对应Laravel根目录的<Directory>配置段,将AllowOverride None修改为AllowOverride All,同时确保配置段内开放了目录访问权限,示例配置如下:
修改完成后执行配置校验命令确认无语法错误:return (<Directory /var/www/your-laravel-project-root> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> )sudo apache2ctl configtest
校验通过后重载Apache配置:sudo systemctl reload apache2 - 排查PHP无法执行问题
- 确认已安装对应PHP版本的Apache适配模块,以PHP8.2为例,安装命令如下:
sudo apt install libapache2-mod-php8.2
安装完成后启用PHP模块:sudo a2enmod php8.2 - 配置Laravel目录权限,Apache运行用户需要拥有storage和bootstrap/cache目录的读写权限,执行以下命令配置:
sudo chown -R www-data:www-data /path/to/your-laravel-project-rootsudo chmod -R 775 /path/to/your-laravel-project-root/storage /path/to/your-laravel-project-root/bootstrap/cache
- 确认已安装对应PHP版本的Apache适配模块,以PHP8.2为例,安装命令如下:
- 推荐优化配置
无需在Laravel根目录添加.htaccess做跳转,可直接将Apache站点的DocumentRoot参数修改为Laravel的public目录路径,同步修改对应<Directory>段的路径为public目录路径,安全性更高也能避免重定向异常。修改完成后可删除根目录自行添加的.htaccess文件,直接使用Laravel自带的public/.htaccess规则即可。
内容的提问来源于stack exchange,提问作者Blockchain Pod Lead
相关产品推荐
相关产品推荐

