Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inne]RewriteRule opcjonalna wersja językowa
!*!
post
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
r4xz
post
Post #2





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
!*!
post
Post #3





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ok, ale w jakiej kolejności?
Go to the top of the page
+Quote Post
!*!
post
Post #5





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


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';}


Ten post edytował !*! 16.03.2011, 12:14:00
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.
Go to the top of the page
+Quote Post
webdice
post
Post #7


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.08.2025 - 05:29