11

我有一个带有一个域和一个子域(用于移动设备和客户端)的共享主机。每个域和子域都有不同的默认索引页面。托管公司告诉我将所有内容都放在我的 .htaccess 文件中,因为我无法访问 httpd.conf。

我想做的是:

  1. 如果用户访问 domain1.com,则DirectoryIndex应该是:index.html
  2. 如果用户访问 mobile.domain1.com,则DirectoryIndex应该是:mobile-index.html
  3. 如果用户访问 post.domain1.com,则DirectoryIndex应该是:post.php
  4. 如果用户去 vote.domain1.comDirectoryIndex应该是:vote.php

编辑:此外,如果我去 domain1.com/page/DirectoryIndex应该是:index.html。如果我去 mobile.domain1.com/page/DirectoryIndex应该是:mobile-index.html

我可以在我的 .htaccess 文件中放入什么来更改DirectoryIndex每个子域的 .htaccess 文件?

非常感谢你

4

3 回答 3

18

<IfDefine>不能那样工作。<IfDefine>仅在 apache 启动时运行。您应该使用 mod_rewrite 解决方案。查看@tzakrajs 答案。

您可以在 .htaccess 文件中使用它:

SetEnvIf Host ^www\. page=www
SetEnvIf Host ^mobile\. page=mobile
rewriterule ^.*$ test.php?subdomain=%{ENV:page} [QSA,L]

只需使用配置所有子域SetEnvIf,然后让 PHP 发挥它的魔力。

于 2011-09-01T22:40:08.223 回答
2

试试这个:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^domain1.com$
RewriteRule ^.*/$ index.html [R=302,L]
RewriteCond %{HTTP_HOST} ^mobile.domain1.com$
RewriteRule ^.*/$ mobile-index.html [R=302,L]
RewriteCond %{HTTP_HOST} ^post.domain1.com$
RewriteRule ^.*/$ post.php [R=302,L]
RewriteCond %{HTTP_HOST} ^vote.domain1.com$
RewriteRule ^.*/$ vote.php [R=302,L]
于 2011-09-01T11:53:38.183 回答
-1

您可以像这样只使用 oyur.htaccess文件进行设置:

RewriteCond %{HTTP_HOST} ^(www\.)?domain.com$ [NC]
RewriteRule DirectoryIndex index.html

RewriteCond %{HTTP_HOST} ^mobile.domain.com$ [NC]
RewriteRule DirectoryIndex mobile-index.html

...
于 2016-03-24T14:01:08.180 回答