Laravel路由重定向前置页面显示异常求助(本地正常服务器异常)
解决Laravel重定向在服务器显示过渡页的问题
这个坑我之前踩过!你遇到的问题是因为Laravel的Route::redirect()在服务器环境下,可能被配置影响,没有直接发送HTTP重定向头,而是生成了一个带跳转提示的HTML页面。下面给你几个靠谱的解决办法:
明确指定重定向状态码
默认的Route::redirect()虽然用302,但有时候服务器会拦截这个响应并转换成HTML跳转。试试手动指定状态码,强制用HTTP头跳转:Route::redirect('google', 'http://www.google.com', 302);301是永久重定向,302是临时重定向,根据你的需求选就行。
改用
redirect()->away()手动返回响应
如果上面的方法不行,直接用闭包返回重定向响应,away()方法专门针对外部域名跳转,会严格发送HTTP重定向头,不会生成过渡页面:Route::get('google', function () { return redirect()->away('http://www.google.com'); });检查服务器配置
有时候服务器的Nginx/Apache配置会修改响应内容,比如某些安全头或者缓存插件。可以检查下服务器配置里有没有类似修改响应的规则,比如Nginx的sub_filter或者Apache的mod_substitute,这些可能会把纯重定向头改成HTML页面。
另外提一句:本地和服务器的差异大概率是因为APP_DEBUG的设置(本地true,服务器false),Laravel在生产环境下的响应处理会更保守,但核心还是要确保你的路由返回的是纯HTTP重定向响应,而不是HTML内容。
内容的提问来源于stack exchange,提问作者Eduardo Zamora
相关产品推荐
相关产品推荐

