如何阻止浏览器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
相关产品推荐
相关产品推荐

