Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne]RewriteRule opcjonalna wersja językowa
Forum PHP.pl > Forum > Przedszkole
!*!
Kod
RewriteRule ^([a-z]{2}+)/([a-z0-9_]+)$ /index.php?lang=$1&article=$2

działa na zasadzie:
Kod
http://domena.com/pl/jakisTAMwyraz


pierwsza reguła po domenie jest to wersja językowa serwisu, jednak jak zrobić żeby w przypadku jej braku, buła możliwa dalsza nawigacja po serwisie?

Kod
http://domena.com/jakisTAMwyraz


Idealny przykład działania ma apple...

Kod
http://www.apple.com/pl/ipad/ios4/
http://www.apple.com/ipad/ios4/


i działa w obu przypadkach.
r4xz
Kod
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]


i wtedy mamy $_GET['rt'];
separujemy poprzez np. "/"
i wtedy sprawdzamy czy pierwsze pasuje jako np. pl, en etc. jeśli nie to traktujemy jako kontroler/akcje/dane czy jaki tam system masz pod to wink.gif
!*!
r4xz nie bardzo rozumiem...

Kod
RewriteRule ^(.*)$ index.php?lang=$1 [L,QSA]


umieszczam razem z tym co napisałem wyżej, jednak wtedy mogę wpisać cokolwiek w adresie i będzie wczytany tylko index.
erix
Ok, ale w jakiej kolejności?
!*!
To nie ma znaczenia, w obu przypadkach działa tak samo źle. Poza tym nie rozumiem dlaczego jako pierwszy ciąg mam dać .* skoro chodzi tylko o pierwszą pozycje.

Kod
RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]
RewriteRule ^([a-z]{2}+)/([a-z0-9_]+)$ /index.php?lang=$1&article=$2


Kod
RewriteRule ^([a-z]{2}+)/([a-z0-9_]+)$ /index.php?lang=$1&article=$2
RewriteRule ^(.*)$ index.php?lang=$1 [L,QSA]


w php byłoby to tak:

  1. if($lang){echo 'domena.com/'.$lang.'/strona-podstrona';}else{echo 'domena.com/strona-podstrona';}
erix
Cytat
To nie ma znaczenia, w obu przypadkach działa tak samo źle. Poza tym nie rozumiem dlaczego jako pierwszy ciąg mam dać .* skoro chodzi tylko o pierwszą pozycje.

Kolejność ma znaczenie, bo w przypadku:

[APACHE] pobierz, plaintext
  1. RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]
  2. RewriteRule ^([a-z]{2}+)/([a-z0-9_]+)$ /index.php?lang=$1&article=$2
[APACHE] pobierz, plaintext

URL pasujący do drugiego wzorca, będzie pasował - w rzeczywistości - również i do pierwszego. Dlatego kolejność jest istotna.

A z palca klepiąc, strzelam w takiej postaci:
[APACHE] pobierz, plaintext
  1. RewriteRule ^([a-z]{2})/([a-z0-9_]+)$ /index.php?lang=$1&article=$2
  2. RewriteRule ^([a-z0-9_]+)$ /index.php?lang=pl&article=$2
[APACHE] pobierz, plaintext


Cytat
Idealny przykład działania ma apple...

To już jest serwis takiego kalibru, że raczej ma to już na poziomie kontrolera aplikacji rozwiązane.
webdice
Nie chce mi się testować, ale powinno działać.

  1. RewriteRule ^([a-z]+)?/?([a-zA-Z0-9_]+)/?$ index.php?lang=$1&article=$2 [L]


Kod języka małymi literami. Ewentualnie możesz sobie dodać warunek wymuszający ilość znaków.
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.