2013-04-28 108 views
0

我正在尝试托管一个网站,其中的用户个人资料页面带有唯一的子域名,例如username.sitename.com。我想要一个Apache/VirtualHost解决方案,将* .sitename.com指向sitename.com/index.php,我可以在这里分类,哪个子域带有一个配置文件页面,哪个会显示404错误。如何将所有子域指向index.php

请帮我建立的.htaccess

+0

这不能用.htaccess文件来完成。 – 2013-04-28 05:47:25

+0

Catchall DNS记录或现在什么? – 2013-04-28 05:49:08

回答

0

这是最好用在httpd.conf文件服务器级别(或包含的配置文件),301重定向做到这一点。而不是创建一个VirtualHost并使服务器回答并过滤每个域的.htaccess文件,您可以在VirtualHost本身中设置重定向。

您可以mod_rewrite

<VirtualHost *> 
    ServerName subdomain.example.com 
    RewriteEngine on 
    RewriteRule ^/(.*)$ http://example.com/index.php [L,R=301] 
</VirtualHost> 

<VirtualHost *> 
    ServerName subdomain2.example.com 
    RewriteEngine on 
    RewriteRule ^/(.*)$ http://example.com/404.php [L,R=301] 
</VirtualHost> 

做到这一点,或者如果你正在运行mod_alias您可以使用此:

<VirtualHost *> 
    ServerName subdomain.example.com 
    Redirect 301/http://example.com/index.php 
</VirtualHost> 

<VirtualHost *> 
    ServerName subdomain2.example.com 
    Redirect 301/http://example.com/404.php 
</VirtualHost> 
1

你只需要一个正确的虚拟主机设置。

<VirtualHost *:80> 
    ServerName example.com 
    ServerAlias *.example.com 

    [...] 

</VirtualHost> 

由于index.php位于DirectoryIndex中,因此会自动调用index.php,无论调用哪个域。通过$_SERVER['HTTP_HOST']变量,您可以动态反应您对要求的主机的访问权限。