![如何使用通配符子域名?](https://linux22.com/image/502159/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E9%80%9A%E9%85%8D%E7%AC%A6%E5%AD%90%E5%9F%9F%E5%90%8D%EF%BC%9F.png)
我希望 subdomain.example.com 指向 example.com/profile.php?user=subdomain
“子域名”随用户输入而变化
你是怎么做到的?另外,我希望它是一个静默重定向,因此当用户输入或点击链接时,subdomain.example.com 就会显示在地址栏中
答案1
看看这个:http://www.easymodrewrite.com/example-subdomains 你实际上需要
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !www.domain.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com [NC]
RewriteRule (.*) domain.com/profile.php?user=%2 [L]
</IfModule>
编辑:为了进行“静默”重定向,最后一条规则应该是:
RewriteRule (.*) /profile.php?user=%2 [L]
确保在设置通配符的profile.php
目录中有。DocumentRoot
答案2
我自己没有这样做过,但我首先会这样做:
使用您的 DNS 提供商配置通配符。
*.domain.com. IN A 1.2.3.4
使用 Apache
mod_rewrite
检查 Host: 标头并修改 URL 以符合您的规格。
答案3
该解决方案可能是所有提到的解决方案的混合。
首先,您需要 JJ 提到的 DNS 条目。然后您必须使用ServerAlias 指令使所有子域指向同一目录。最后,您可以使用 Niek Bergman 代码的前两行:
$domain = explode(".", $_SERVER['SERVER_NAME']);
$username = htmlentities($domain[0]);
从那时起,您就可以使用 $username 做任何您想做的事情。