mod_rewrite: przekierowanie z subdomeny na glowna domene

0

Do pliku c:\windows\system32\drivers\etc\hosts dopisuje:

127.0.0.3   foo.net
127.0.0.3   forum.foo.net

Tworze dwa vhosty:

<VirtualHost foo.net:80>
    ServerAdmin [email protected]
    ServerName foo.net
DocumentRoot "C:/usr/src/foo"
</VirtualHost>

<VirtualHost forum.foo.net:80>
    ServerAdmin [email protected]
    ServerName forum.foo.net
DocumentRoot "C:/usr/src/foo"
</VirtualHost>

Tworzenie folder foo, w ktorym umieszczam .htaccess oraz plik index.php:

<?php

echo $_SERVER['PATH_INFO'];
?>

.htaccess:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^forum\.foo\.net$
RewriteCond %{REQUEST_URI} !^/forum/
RewriteCond %{REQUEST_FILENAME} !-s [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.+)$ /index.php/forum/$1 [L]

RewriteCond %{HTTP_HOST} !^forum\.foo\.net$
RewriteCond %{REQUEST_FILENAME} !-s [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.+) index.php/$1 [L]

Kiedy wklepuje w przegladarce http://forum.foo.net/test wyswietla mi /forum/test (prawidlowo!), http://foo.net/a/b/c wyswietla /a/b/c (czyli dobrze). Ale http://forum.foo.net/ wyswietla sie pusta wartosc (powinno byc /forum), czyli trzeba dopisac kolejna regule (IMHO), albo zmodyfikowac te, powyzsza.

Zazaczam, ze nie moge uzyc dyrektywy [R], poniewaz nie chce, aby dokonywane bylo przekierowywanie.

Prosze o pomoc.

0

wydaje mi się że wystarczy w pierwszej regułce zmienić

^(.+)$

na

(.*)

(nie sprawdzałem)
ale... i tak przekierowujesz wszystko na index.php jeżeli dobrze widzę, tak? dlaczego więc nie odpuścić apachowi i w php sprawdzać HTTP_HOST? wydaje mi się to bardziej elastycznym rozwiązaniem

0

Niestety to nie dziala...

Myslalem, ze da sie to zrobic bez ingerencji w kod. Ba! Jestem pewien, ze sie da, tylko nie wiem jak :P

Ale jezeli nic nie wymysle, to trzeba bedzie ingerowac w kod :/

0 użytkowników online, w tym zalogowanych: 0, gości: 0