我创建了像这个user2.example.com 这样的子域。
127.0.0.1 localhost
127.0.0.1 user2.localhost
这是静态的
但是我需要 user2 将 b 动态,例如,如果我注册了 abc(用户名),我的网站应该像这样 abc.example.com
您要搜索的是通配符子域。您需要在您的域名经销商(*.example.com
)注册一个,但我知道大多数托管商都不支持它。要在本地主机上进行测试,您需要一个自定义 DNS 服务器。看看这个答案。
然后它取决于网络服务器。
对于阿帕奇:
<VirtualHost 111.22.33.55>
DocumentRoot /www/subdomain
ServerName www.domain.tld
ServerAlias *.domain.tld
</VirtualHost>
对于 Nginx:
server {
server_name example.com www.example.com;
root www/pub;
}
server {
server_name ~^(.*)'.example'.com$ ;
root www/pub/$1;
}
对于 IIS:
<rule name="CustomRule" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*.aaa.bbbb.com" />
<action type="Rewrite" url="http://aaa.bbbb.com/{R:0}" />
</rule>
如果你在Apache上运行你的网站,最好从Apache文档中查看URL重写指南。你也可以尝试这样的事情:
RewriteCond %{HTTP_HOST} ^([^.]+)'.domain'.com$
RewriteRule ^/(.*)$ http://www.domain.com/%1/$1 [L,R]
如果你在Nginx上运行你的网站,你可以试试这个:
server {
server_name ~^(.*)'.domain'.com$ ;
rewrite ^ http://www.domain.com/$1 break;
}
首先,我们需要配置 DNS 设置,使所有子域解析为单个地址。然后在 Apache 配置中配置虚拟主机以保存我们的页面并记住通配符。
逐步查看本教程