0

我正在尝试托管一个站点,该站点上的用户个人资料页面带有唯一的子域,例如 username.sitename.com。我想要一个 Apache/VirtualHost 解决方案,用于将 *.sitename.com 指向 sitename.com/index.php,我可以在其中进行分类,哪个子域带有个人资料页面,并且会显示 404 错误。

请帮我设置 .htaccess

4

2 回答 2

2

您只需要正确的 VirtualHost 设置。

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

  [...] 

</VirtualHost>

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

于 2013-04-28T08:34:28.733 回答
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>
于 2013-04-28T06:16:46.847 回答