Sytuacjamod_rewrite wybrać folder dla domeny
Używam Zend Framework, a więc próbować wywołać folder adres kończy się fiaskiem i dostaje błąd: „Nieprawidłowy sterownik określony”. Musiałem podłączyć dodatkowe forum do aplikacji w oddzielnym folderze. Zmienić plik .htaccess następująco:
RewriteRule ^forum(.*)$ forum$1 [L]
i przez jakiś czas było dobrze, aż zdałem sobie sprawę z faktu, że strona istnieje w dwóch wersjach w dwóch domenach (PHP rozpoznaje domenę [.pl/.pl ] i wybiera język). Postanowiłem więc oddzielić fora jako dwa osobne moduły (na przykład folder dla polskiego forum wersji będzie: forum_pl, a dla Wielkiej Brytanii będzie to: forum_uk - dwa różne fora)
Na czym polega problem?
Trzeba przerobić plik .htaccess pracować tak:
IF: www.domena.pl/forum
wówczas: otwarty do skryptu z folderu/forum_pl
IF: www.domain.co.uk/forum
THEN: otwarty na skrypt z folderu/forum_uk.
Najgorsze jest to, że gdy próbowałem naprawić plik .htaccess dodając RewriteCond, to pierwsze przekierowanie przestało działać poprawnie, nawet po powrocie do oryginalnej wersji (pokazanej powyżej).
Proszę mi pomóc i przepraszam, jeśli nie znalazłem odpowiedzi już wcześniej podanych.
EDIT:
Pierwszy roboczy roztwór
RewriteRule ^forum_pl(.*)$ forum_pl$1 [L]
RewriteRule ^forum_uk(.*)$ forum_uk$1 [L]
RewriteCond %{HTTP_HOST} ^www.domena.pl(.*) [NC]
RewriteRule ^forum(.*)$ forum_pl$1 [L]
RewriteCond %{HTTP_HOST} ^www.domain.co.uk(.*) [NC]
RewriteRule ^forum(.*)$ forum_uk$1 [L]
To wyglądało, że chce pracować, ale problemy, które wymaga rozwiązania jest (TODO):
- kiedy typ: www.domain.pl/forum trafia na stronę www.domain.pl/forum_pl/, ale jeśli wpiszesz: www.domain.pl/forum/ to przeniesie Cię do www.do main.pl/forum/ (przeczytaj z forum_pl). Jak sprawić, żeby to działało w pierwszej sytuacji tak samo, jak w drugim.
EDIT:
Moje ostatnie rozwiązanie:
#FORUM
#PL
RewriteCond %{REQUEST_URI} ^/forum$ [NC]
RewriteRule ^(.*)$ forum/ [R=301,L]
RewriteRule ^forum_pl(.*)$ forum_pl$1 [L]
RewriteCond %{REQUEST_URI} ^/forum_pl(.*)$ [NC]
RewriteRule ^(.*)$ http://www.domena.pl/forum/ [R=301,L] #Dosen't work properly (?)
RewriteCond %{HTTP_HOST} ^www.domena.pl(.*) [NC]
RewriteCond %{REQUEST_URI} ^/forum(/?)$ [NC]
RewriteRule ^forum[^/](.*)$ forum_pl/$1 #Dosen't work properly, but without it crash!
RewriteRule ^forum(.*)$ forum_pl$1 [L]
#UK
RewriteCond %{REQUEST_URI} ^/forum_uk(.*)$ [NC]
RewriteRule ^(.*)$ http://www.domain.co.uk/forum/ [R=301,L] #Dosen't work properly (?)
RewriteCond %{HTTP_HOST} ^www.domain.co.uk(.*) [NC]
RewriteCond %{REQUEST_URI} ^/forum(/?)$ [NC]
RewriteRule ^forum[^/](.*)$ forum_uk/$1 #Dosen't work properly, but without it crash!
RewriteRule ^forum(.*)$ forum_uk$1 [L]
Ostateczna wersja robocza:
RewriteRule ^forum_pl(.*)$ forum_pl$1 [L]
RewriteRule ^forum_uk(.*)$ forum_uk$1 [L]
RewriteRule ^forum_pl(.*)$ http://www.domena.pl/forum$1 [R=301,L] # Not working!
RewriteRule ^forum_uk(.*)$ http://www.domain.co.uk/forum$1 [R=301,L] # Not working!
# Normalize URL first:
RewriteRule ^forum$ forum/ [R=301,L]
# redirect to polish version of web under forum_pl if on .pl TLD and
# request is made to /forum/ (already normalized)
RewriteCond %{HTTP_HOST} =www.domena.pl [NC]
RewriteRule ^forum(.*)$ forum_pl$1 [L]
# redirect to english version of web under forum_en in on .uk TLD and
# request is made to /forum/
RewriteCond %{HTTP_HOST} =www.domain.co.uk [NC]
RewriteRule ^forum(.*)$ forum_uk$1 [L]
Szkoda, że można zadzwonić z twoje czoło ser forum_uk i foldery forum_pl ręcznie.
Dzięki za odpowiedź ! Ale ostatecznie nie jest to dokładnie to, czego szukam. Teraz działa to tak: www.domena.pl/forum otwiera www.domena.pl/forum_pl/ www.domain.co.uk/forum otwiera www.domena.pl/forum_uk/ I don ' t chcesz _pl i _uk w url :) – MrTomAsh
@ user1532418, więc chcesz wziąć skrypty z folderów forum_pl i forum_uk odpowiednio, ale chcesz zachować/forum/w pasku adresu przeglądarki? Jeśli tak, musisz usunąć 'R = 301' - przekierowuje, więc pasek adresu w przeglądarce odzwierciedla zmianę –
Jakoś zaczyna działać! Dzięki! – MrTomAsh