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

如何阻止浏览器URL重定向?Laravel站点移除public后仍重定向求助

解决Laravel站点仍跳转至public目录的问题

Hey there! 看你已经做了不少排查工作——移除了cPanel重定向、删除了根目录的.htaccess,但只有自己的电脑还会跳转到public,其他设备正常,这大概率是缓存在搞鬼!咱们一步步来解决:

1. 先清掉浏览器缓存

这是最常见的原因,你的浏览器可能还存着旧的重定向规则。试试这些操作:

  • 按Ctrl + Shift + Delete(Windows)或Cmd + Shift + Delete(Mac)打开清除缓存面板,勾选“缓存的图片和文件”,选择“全部时间”范围后清除。
  • 或者用无痕模式访问站点,如果无痕模式下正常,那肯定是浏览器缓存的问题。

2. 检查服务器端缓存(cPanel/Apache)

有时候cPanel或Web服务器会缓存重定向规则,即使你删除了重定向设置:

  • 登录cPanel,找到“缓存”相关工具(比如“Optimize Website”或者你用的Cloudflare),手动清除服务器缓存。
  • 如果是Apache服务器,通过SSH重启服务:sudo service apache2 restart(CentOS系统用sudo systemctl restart httpd)。

3. 确保Laravel的.htaccess配置正确

虽然你删除了根目录的.htaccess,但正确的做法应该是把public目录里的.htaccess复制到根目录,同时调整根目录的index.php指向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>

同时根目录的index.php需要修改路径指向:

require __DIR__.'/public/vendor/autoload.php';

$app = require_once __DIR__.'/public/bootstrap/app.php';

4. 清除Laravel自身缓存

Laravel可能缓存了路由或配置规则,执行以下命令清空:

php artisan cache:clear
php artisan route:clear
php artisan config:clear

5. 刷新本地DNS缓存

如果浏览器缓存清了还是不行,可能是本地DNS缓存存了旧记录:

  • Windows:打开命令提示符,执行ipconfig /flushdns
  • Mac:打开终端,执行sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

按这个顺序排查下来,应该能解决你的跳转问题!

内容的提问来源于stack exchange,提问作者aswal94

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:25:01