根据.htaccess中的域/子域更改DirectoryIndex

时间:2011-09-01 11:33:50

标签: apache .htaccess mod-rewrite redirect directoryindex

我有一个域和一个子域(用于移动和客户端)的共享主机。每个域和子域都有不同的默认索引页。托管公司告诉我把所有内容放在我的.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.com,则DirectoryIndex应为:vote.php
  5. 编辑: 另外,如果我转到domain1.com/page/,DirectoryIndex应该是:index.html。如果我访问mobile.domain1.com/page/,DirectoryIndex应该是:mobile-index.html

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

    非常感谢你

3 个答案:

答案 0 :(得分: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发挥其魔力。

答案 1 :(得分: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]

答案 2 :(得分:-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

...