许多网站为用户的个人资料或页面提供了一个自定义子域,因此用户可以通过 http://username.website.com 访问他的个人资料,这要好得多。在这篇文章中,我们将了解如何高效地进行动态 Laravel 子域路由。
配置DNS
要做到这一点,您需要访问DNS服务器设置和阿帕奇网络服务器设置。
首先,您需要添加一个A record子域带有星号,如下所示:
* IN A 192.168.1.5
您应该将 IP 地址替换为您的 IP 地址。
配置网络服务器
打开 Apache Web 服务器配置文件 httpd.conf 并添加虚拟主机像这样:
<VirtualHost *:80>
ServerName website.com
ServerAlias *.website.com
</VirtualHost>
假设我们有用户的名称字段,其中将包含用户的姓名。
现在我们将创建我们的路线。
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://likegeeks.website.com),您应该可以毫无问题地看到用户名。
请记住,您正在访问其子域的用户必须存在于数据库中。
添加到数据库中的任何用户都将自动拥有他的子域,无需担心。
如果您无法访问 Web 服务器配置(例如使用共享托管等),则无法使用 htaccess 重定向实现相同的功能。
子域中的多个路由
在上面的示例中,我们使用单个路由来处理子域,但是您可以对子域使用多个路由。
您可以使用路由组来实现此目的:
Route::group(array('domain' => '{subdomain}.website.com'), function () {
Route::get('/', function ($subdomain) {
$name = DB::table('users')->where('name', $subdomain)->get();
dd($name);
});
});
如您所见,Laravel 子域路由非常容易实现。我希望您觉得这篇文章有用。继续回来。
谢谢。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)