You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:42:11