如何使用PHP和htaccess创建动态子域?

时间:2013-07-17 17:57:48

标签: php .htaccess

我有一个问题: 我想设置PHP和htaccess来创建动态子域。我无法弄清楚如何。 目前我的网址如下所示:

www.exemple.com/index.php?subdomain=mike&component=content&id=26&title=people-love-apps 

我需要它看起来像这样:

www.mike.exemple.com/content/26/people-love-apps.html

我知道可以做到,但我不知道如何解决这个问题。 使用$ _GET []函数读取URL中的参数对我来说非常重要。

问题是我网站上的用户自动创建了自己的网站并获得了免费域名(子域名)。这应该是自动的。

谢谢!

2 个答案:

答案 0 :(得分:15)

您无法使用.htaccess

制作动态子域名

您需要将apache虚拟主机配置为接受多个域的请求

请参阅Apache documentation - Using Name Based Virtual Hosts

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com *.example.com
    DocumentRoot /www/domain
</VirtualHost>

添加通配符子域*.example.com,您的PHP应用程序将收到example.com下任何域的所有请求,即garbage.example.combusted.example.comllama.example.com

Creating Wildcard Sub Domain Using Apache VirtualHost

Multiple Domains to One Virtual Host | Wildcard Host (shared hosting)?

Apache default virtual host for multiple domains

此时,您的应用程序必须确定子域的有效性,并显示未知潜艇的相应错误。

从那里,解析mike

的域名

答案 1 :(得分:3)

OF COURSE您可以使用htaccess解释动态子域。 以下规则将解决问题。

RewriteCond %{HTTP_HOST} www\.([^.]+)\.example\.com [NC]
RewriteRule ^/content/([0-9]+)/([a-zA-Z0-9_\-])\.html /index.php?subdomain=%1&component=content&id=$1&title=$2  [L]

所以任何人都要参加

 www.mike.exemple.com/content/26/people-love-apps.html

会看到

的内容
www.exemple.com/index.php?subdomain=mike&component=content&id=26&title=people-love-apps