2011-09-01 13 views
11

Mam współdzielony hosting z jedną domeną i jedną subdomeną (dla urządzeń przenośnych i klientów). Każda domena i subdomeny ma różne domyślne strony indeksu. Firma hostingowa kazała mi umieścić wszystko w moim pliku .htaccess, ponieważ nie mam dostępu do pliku httpd.conf.Zmień DirectoryIndex na podstawie domeny/subdomeny w .htaccess

Co chcę zrobić to:

  1. Jeśli użytkownik przechodzi do domain1.com DirectoryIndex powinno być: index.html
  2. Jeśli użytkownik przechodzi do mobile.domain1.com DirectoryIndex powinny być: mobile-index.html
  3. Jeśli użytkownik przechodzi do post.domain1.com się DirectoryIndex powinno być: post.php
  4. Jeśli użytkownik przechodzi do vote.domain1.com się DirectoryIndex powinno być: vote.php

Edit: Ponadto, jeśli pójdę do domain1.com/page/ DirectoryIndex powinno być: index.html. Jeśli pójdę do mobile.domain1.com/page/ DirectoryIndex powinno być: mobile-index.html

Co mogę umieścić w moim pliku .htaccess, aby zmienić DirectoryIndex dla każdej subdomeny?

Dziękuję bardzo mich

Odpowiedz

18

<IfDefine> nie działa tak. <IfDefine> działa tylko po uruchomieniu apache. Powinieneś pójść z rozwiązaniem mod_rewrite. zobacz odpowiedź @tzakrajs.

Można to wykorzystać w pliku .htaccess:

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

Wystarczy tylko skonfigurować wszystkie swoje subdomeny za pomocą SetEnvIf a następnie po prostu niech PHP zrobić swoją magię.

+2

Dziękuję za wyjaśnienia. Dzięki za SetEnvIf, myślę, że jest to łatwiejsze do wdrożenia (zamiast tworzyć 4 różne pliki). Dzięki – Tech4Wilco

+0

Innymi słowy: '' 'nie jest dynamiczne po uruchomieniu Apache. – Geremia

2

Spróbuj tego:

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] 
+0

dzięki, że pracuje dla strony docelowej, ale to nie działa dla podkatalogu. na przykład mobile.domain1.com/page/ powinien załadować mobile-index.html – Tech4Wilco

+0

W porządku. Zmodyfikowałem reguły tak, aby pasowały do ​​dowolnego podkatalogu (ex: domain1.com/fdskjfkls/ przekieruje do index.html) – tzakrajs

+0

Działa, ale nie przekieruje do: domain1.com/fdskjfkls/index.html i mobile.domain1.com/fdskjfkls/mobile.html – Tech4Wilco

-1

można ustawić za pomocą tylko oyur .htaccess plik tak:

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

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

... 
+0

to nie działa .... – Laxman

+0

@laxman nie musisz głosować w dół tylko dlatego, że nie działa dla ciebie – CIRCLE

Powiązane problemy