你如何做通配符的子域名?

我希望subdomain.example.com指向example.com/profile.php?user=subdomain

随着“子域”随着用户input而变化

你是怎样做的? 此外,我希望它是一个沉默的redirect,所以subdomain.example.com显示在地址栏中时,用户键入它或点击链接

看到这一个: 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> 

编辑:有一个“沉默”的redirect,最后的规则应该是:

  RewriteRule (.*) /profile.php?user=%2 [L] 

确保在通配符的DocumentRoot所在的目录中有profile.php

我自己并没有这样做,但我会先从:

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

    *.domain.com. IN A 1.2.3.4

  2. 使用Apache的mod_rewrite检查主机:标题并修改URL以符合您的规格。

解决scheme可能是所有提到的解决scheme的组合。

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

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

从那里你可以做任何你想要的$用户名。