Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mod_rewrite] wielojęzyczność
Forum PHP.pl > Forum > Serwery WWW
michal1239
Witam.

Moim celem jest umożliwienie skryptom pobieranie informacji o języku w jakim użytkownik chce wyświetlić stronę oraz oczywiście o bieżącej lokalizacji.

Przykładowe wywołania witryny:
strona.pl
strona.pl/jakas_strona
strona.pl/konto/logowanie
en.strona.pl
en.strona.pl/jakas_strona
en.strona.pl/konto/logowanie

Wszystkie dane trafiają do pliku index.php jako $_GET['_url'] i $_GET['_lang']

Oto kawałek kodu mod_rewrite jaki wyskrobałem:
Kod
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(([a-z]{2})\.|)(.+)$ [NC]
RewriteRule ^(.*)$ index.php?_url=$1&_lang=%2 [NC,L]


Niestety powyższy kod działa jedynie w wybranych przypadkach.

Działa gdy podana jest jakaś wartość dla _url (czyli np. strona.pl/cos_tam_cos lub en.strona.pl/cos_tam_cos), wówczas wyświetla (jeśli podano) _lang i _url
Natomiast gdy wywołam stronę główną (np. strona.pl lub en.strona.pl), żaden z parametrów nie jest przekazywany do skryptu

Proszę o pomoc. Jak zmienić mój kod, by działał w każdym przypadku?

Pozdrawiam
Michał
by_ikar
Poszukaj chociażby tutaj na forum o "wildcard", bo dynamiczne subdomeny to nie tylko htaccess, ale również ustawienia mx domeny.
michal1239
Edit 2

Problem rozwiązany. Dla potomnych:
Kod
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(([a-z]{2})\.|)(.+)$ [NC]
RewriteRule ^(.*)$ index.php?_url=$1&_lang=%2 [NC,L]

RewriteCond %{HTTP_REFERER} ^$ [NC]
RewriteCond %{HTTP_HOST} ^(([a-z]{2})\.|)(.+)$ [NC]
RewriteRule ^$ index.php?_url=index&_lang=%2 [NC,L]


Edit 1

Dodam jeszcze informacje z print_r($_GET); otrzymywane w różnych sytuacjach:

strona.pl
Array ( )

en.strona.pl
Array ( )


strona.pl/cos_tam_cos
Array ( [_url] => cos_tam_cos [_lang] => )

en.strona.pl/my_page
Array ( [_url] => my_page [_lang] => en )


Edit 0

Wildcard jest włączony.
Zresztą w przypadku wywołania strony en.strona.pl/cos_tam_cos wszystko działa idealnie, problem zaczyna się, gdy wywołuję en.strona.pl (czyli bez wskazania lokalizacji), co jednoznacznie wskazuje na błąd w wyrażeniu regularnym.
Próbowałem już na wiele sposobów, posiłkując się artykułami i postami z sieci, jednak nic nie pomogło.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.