Apache下Laravel项目.htaccess重定向:地址栏不显示public路径
解决方案
1. 调整Apache站点配置
首先修改Apache的配置文件,确保项目根目录允许.htaccess生效,同时保留public目录的权限配置:
<Directory "/var/www/html/flex360/opera"> Options FollowSymLinks AllowOverride All Require all granted </Directory> <Directory "/var/www/html/flex360/opera/public"> Options FollowSymLinks AllowOverride All Require all granted </Directory>
修改完成后重启Apache服务:
sudo systemctl restart apache2
2. 配置项目根目录的.htaccess
在/flex360/opera目录下创建或修改.htaccess文件,写入以下规则:
RewriteEngine On # 仅转发不存在的文件/目录请求到public,避免重定向循环 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ public/$1 [L]
该规则会在用户请求的文件或目录不存在时,内部转发到public目录处理,同时地址栏不会显示public路径。
3. 修正Laravel的URL配置
打开项目根目录下的config/app.php,确认url配置项指向你的域名路径:
'url' => env('APP_URL', 'https://你的域名/flex360/opera'),
同时修改.env文件中的对应配置:
APP_URL=https://你的域名/flex360/opera
问题原因说明
你之前的第一个规则因未判断文件/目录是否存在,导致请求被反复转发到public目录,触发重定向循环。新增!-f和!-d条件后,仅对不存在的资源进行转发,避免了重复匹配规则的问题。
内容的提问来源于stack exchange,提问作者Mahadev
相关产品推荐
相关产品推荐

