我正在尝试托管一个站点,该站点上的用户个人资料页面带有唯一的子域,例如 username.sitename.com。我想要一个 Apache/VirtualHost 解决方案,用于将 *.sitename.com 指向 sitename.com/index.php,我可以在其中进行分类,哪个子域带有个人资料页面,并且会显示 404 错误。
请帮我设置 .htaccess
您只需要正确的 VirtualHost 设置。
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
[...]
</VirtualHost>
由于 index.php 在 DirectoryIndex 中,因此无论调用哪个域,都会自动调用它。$_SERVER['HTTP_HOST']
做动态反应,您可以通过变量访问请求的主机。
最好在 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>