PHP:使用htaccess的每个用户的动态子域

时间:2010-09-01 05:44:42

标签: php .htaccess

是否可以使用htaccess为每个用户创建动态子域。例如,如果有一个用户名为myusername的用户,则为他添加一个子域名,如htt://www.myusername.example.com,当有人加载此页面时,它应该为http://www.example.com/?user=myusername(使用htaccess )

5 个答案:

答案 0 :(得分:1)

您必须先调整服务器软件 ?user = myusername是主机www.example.com上的路径 而www.myusername.example.com是另一个主机
浏览器必须知道应该为www.myusername.example.com域调用哪个IP地址。

因此,首先您必须设置 DNS记录,以使所有子域成为主域的别名。
接下来,您必须设置您的Web服务器软件以接受所有子域 最后,您可以处理任何子域请求。没有.htaccess参与。

有关详细信息 - 请参阅此前在此处回答的许多相同问题。

答案 1 :(得分:1)

是的,有可能!

您可以使用以下内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).example.com [NC]
RewriteRule . http://example\.com/?user=%2/ [L]
</IfModule>

确保* .example.com设置为指向example.com的服务器。 (您需要为此创建一个名称记录。您必须使用“通配符子域”,如'balupton'所指示的那样)

答案 2 :(得分:0)

我不相信你可以在.htaccess文件中执行此操作。您所描述的是配置由给定的Apache实例提供服务的Virtual Hosts个数。必须在Apache服务器配置文件中配置虚拟主机,而不是.htaccess文件。见文档。

答案 3 :(得分:0)

您可以使用.htaccess文件部分执行此操作,但某些配置必须在httpd.conf级别完成。基本上,它看起来像这样:

a)将您的域配置为具有该区域的通配符dns。有关如何执行此操作的确切详细信息取决于您的DNS提供商是谁,或者您正在运行哪个BIND软件。但基本上设置了以便* .example.com指向服务器的地址 b)像这样配置网络服务器:

<VirtualHost x.x.x.x:80>
    ServerName *.example.com
    ...
</VirtualHost>

<VirtualHost x.x.x.x:80>
    Server some.fixed.subdomain.example.com
    ...
</VirtualHost>

确保在通配符条目之后列出任何非动态域,否则很可能无效。 Apache对此设置的顺序非常挑剔。

使用此设置,无需将请求重写到查询中。您可以让脚本检查$_SERVER['HTTP_HOST']以确定正在提供哪个虚拟子域并从那里开始工作。

答案 4 :(得分:0)

您所追求的功能称为Wildcard Subdomains。它允许您不必为每个子域设置DNS,而是使用apache重写进行重定向。你可以找到一个很好的教程here,但有成千上万的教程。以下是该教程中必要的代码:

<VirtualHost 111.22.33.55>
    DocumentRoot /www/subdomain
    ServerName www.domain.tld
    ServerAlias *.domain.tld
</VirtualHost>

但由于需要使用VirtualHosts,因此必须在服务器的httpd.conf文件中设置,而不是本地.htaccess。