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

Laravel 9 如何配置命名路由使用不带端口的自定义域名

解决Laravel 9命名路由生成错误链接的问题

针对你用php artisan serve --host="mywebsite.com" --port=3000启动服务时,命名路由生成http://localhost:3000或带端口无HTTPS链接的问题,按以下步骤配置:

1. 修正.env配置并清除缓存

确保.env文件中APP_URL设置为带HTTPS的域名,无端口:

APP_URL=https://mywebsite.com

执行命令清除配置和路由缓存:

php artisan config:clear
php artisan route:clear

2. 配置信任代理(关键步骤)

因为你通过IIS反向代理访问后端的3000端口,Laravel默认会读取后端服务器的请求信息,需要让它识别IIS转发的真实域名和协议。修改app/Http/Middleware/TrustProxies.php:

<?php

namespace App\Http\Middleware;

use Illuminate\Http\Middleware\TrustProxies as Middleware;
use Illuminate\Http\Request;

class TrustProxies extends Middleware
{
    // 信任所有代理(生产环境建议指定IIS的具体IP)
    protected $proxies = '*';

    // 启用所有转发头的检测
    protected $headers = Request::HEADER_X_FORWARDED_ALL;
}

3. 配置IIS反向代理的转发头

在IIS的URL重写规则中,添加以下服务器变量,确保转发真实的协议和主机名:

  • 新增服务器变量HTTP_X_FORWARDED_PROTO,值设为https
  • 新增服务器变量HTTP_X_FORWARDED_HOST,值设为mywebsite.com

4. 强制URL生成规则(可选兜底方案)

如果上述配置仍有问题,可在bootstrap/app.php中强制URL生成使用指定的根地址和协议:

$app->afterBootstrapping(\Illuminate\Foundation\Bootstrap\LoadConfiguration::class, function ($app) {
    $app['url']->forceRootUrl(config('app.url'));
    $app['url']->forceScheme('https');
});

完成以上配置后,命名路由生成的链接就会是https://mywebsite.com/xxx格式,不带端口且使用HTTPS。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:54:24