我正在使用laravel5.5并且我正在实现通配符dns,为每个用户提供他们自己的子域。
在我的实施中,我正在使用带有Windows 10和laragon服务器的笔记本电脑。
在laragon上我设置如下
<VirtualHost *:80>
DocumentRoot "C:/laragon/www/tindahan/public/"
ServerName tindahan.local
ServerAlias *.tindahan.local
<Directory "C:/laragon/www/tindahan/public/">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
并在主机文件上
127.0.0.1 tindahan.local
127.0.0.1 fil.tindahan.local
127.0.0.1 liz.tindahan.local
在路线上
Route::get('/', function () {
$url = parse_url(url()->current());
$domain = explode('.', $url['host']);
$subdomain = $domain[0];
dd($subdomain);
});
所以当访问fil.tindahan.local或liz.tindahan.local时,我得到了结果
fil
和Liz
但如果我访问joseph.tindahan.local,我收到此错误
无法访问此网站
我需要在主机上创建另一个子域才能使其正常工作。
问题是,如何自动完成?
当我输入任何名称作为子域时,它应该自动创建,以便我永远不会手动创建它?
答案 0 :(得分:0)
据我所知,错误将在网络层解决,而不是从应用层解决(在本例中为laravel
)。
我认为您需要自己的本地DNS服务器。
我在Linux(ubuntu)中使用过dnsmasq
,它运行良好。
步骤进行:
apt install dnsmasq
/etc/dnsmasq.conf
。address=/your_domain.loc/127.0.0.1
(这只是一个示例,因此您可能需要更改domain
和ip
。sudo systemctl restart dnsmasq
以重新启动服务。your_domain.loc
的任何网址,但您不会收到该错误;)古德勒克