我正在尝试托管用户个人资料页面附带唯一子域名的网站,例如username.sitename.com。我想要一个Apache / VirtualHost解决方案,用于指向* .sitename.com到sitename.com/index.php,我可以在那里分配,哪个子域带有一个配置文件页面,哪个会显示404错误。
请帮我设置.htaccess
答案 0 :(得分:2)
您只需要正确的VirtualHost设置。
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
[...]
</VirtualHost>
由于index.php位于DirectoryIndex中,因此无论调用哪个域,都会自动调用它。动态响应您通过$_SERVER['HTTP_HOST']
变量访问所请求的主机。
答案 1 :(得分:0)
最好在httpd.conf文件(或包含的配置文件)中通过服务器级别的301重定向执行此操作。您可以在VirtualHost本身中设置重定向,而不是创建VirtualHost并使服务器使用每个域的.htaccess文件进行应答和过滤。
您可以使用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>