如何使用通配符子域名?

如何使用通配符子域名?

我希望 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

我自己没有这样做过,但我首先会这样做:

  1. 使用您的 DNS 提供商配置通配符。

    *.domain.com. IN A 1.2.3.4

  2. 使用 Apachemod_rewrite检查 Host: 标头并修改 URL 以符合您的规格。

答案3

该解决方案可能是所有提到的解决方案的混合。

首先,您需要 JJ 提到的 DNS 条目。然后您必须使用ServerAlias 指令使所有子域指向同一目录。最后,您可以使用 Niek Bergman 代码的前两行:

$domain = explode(".", $_SERVER['SERVER_NAME']);
$username = htmlentities($domain[0]);

从那时起,您就可以使用 $username 做任何您想做的事情。

相关内容