子域中的多条路由

在上面的示例中,我们使用单个路由来处理子域,但是我们可以使用多个路由来处理子域。

我们可以使用路由组来实现这一点:

Route::group(array('domain' => '{subdomain}.website.com'), function () {
    Route::get('/', function ($subdomain) {
        $name = DB::table('users')->where('name', $subdomain)->get();
        dd($name);
    });
});

配置网络服务器

打开 Apache Web 服务器配置文件 httpd.conf 并添加一个 VirtualHost,如下所示:

<VirtualHost *:80>
 ServerName website.com
 ServerAlias *.website.com
</VirtualHost>

假设我们有包含用户名的 name 字段的用户。

现在我们将创建我们的路线。

Route::get('/', function () {
    $url = parse_url(URL::all());
    $domain = explode('.', $url['host']);
    $subdomain = $domain[0];
    $name = DB::table('users')->where('name', $subdomain)->get();
    dd($name); 
    // write the rest of your code.
});

首先,我们分解 URL 并从中提取主机;然后,我们得到子域部分。

然后我们在用户表中搜索与提取的子域匹配的用户名。

你可以检查是否没有找到用户,重定向到另一个页面,或者给他一条错误消息或者其他什么。

现在,如果我们尝试访问任何用户子域,例如 http://onitroad.website.com,我们应该可以毫无问题地看到用户名。

请记住,我们正在访问其子域的用户必须存在于数据库中。

任何添加到数据库的用户都会自动拥有他的子域,而不会让人头疼。

如果我们无权访问 Web 服务器配置,例如使用共享主机等,则无法使用 htaccess 重定向来实现相同的功能。

创建和使用动态 Laravel 子域路由

许多网站为其用户的个人资料或者页面提供自定义子域,因此用户可以通过 http://username.website.com 访问他的个人资料,这要好得多。
在这篇文章中,我们将看到如何有效地进行动态 Laravel 子域路由。

配置 DNS

要做到这一点,我们需要访问 DNS 服务器设置和 apache 网络服务器设置。

首先,我们需要为子域添加带有星号的 A 记录,如下所示:

*              IN          A             192.168.1.5

我们应该将 IP 地址替换为 IP 地址。

日期:2020-07-15 11:16:28 来源:oir作者:oir