子域中的多条路由
在上面的示例中,我们使用单个路由来处理子域,但是我们可以使用多个路由来处理子域。
我们可以使用路由组来实现这一点:
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 重定向来实现相同的功能。
许多网站为其用户的个人资料或者页面提供自定义子域,因此用户可以通过 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