Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prosty Rewrite
Forum PHP.pl > Forum > Przedszkole
pawel_
Witam.
Sytuacja jest następująca. Chciałbym do cms'a dołożyć obsługę języków.
/pl -> /index/lang/pl
/pl/jakis_alais -> /index/lang/pl/url/jakis_alias
/alias -> /index/alias/alias

Wydawało mi się, że te proste regułki dadzą sobie radę, ale jednak nie..
Kod
AddHandler application/x-httpd-php5 .php
RewriteEngine On
RewriteRule ^([a-z]{2})$    /index/lang/$1 [R,L]
RewriteRule ^([a-z]{2})/(.*)    /index/lang/$1/url/$2 [R,L]
RewriteRule    ^([a-z0-9_]+)    /index/alias/$1 [R,L]
RewriteRule    !\.(js|css|html|htm|gif|jpg|png|ico)    /index.php

Kraj zawsze będzie oznaczony 2 znakami (pl, en, de, no, ...).
Aktualnie FF rzuca błędem
Kod
Firefox wykrył, że serwer przekierowuje żądanie tego zasobu w sposób uniemożliwiający jego ukończenie.

Proszę o pomoc;-)
Pozdrawiam,
Paweł
SirZooro
Spróbuj zainstalować dodatek LiveHTTPHeaders do FF i pooglądać nagłówki - tam powinieneś znaleźć odpowiedź.
pawel_
Witam.
Hmm wygląda to trochę tak, że
wchodzimy na /pl/aaa i przekierowuje na /index/alias a potem łapie się w RewriteRule ^([a-z0-9_]+) /index/alias/$1 [R,L] i się zapętla :?

ma ktoś jakiś pomysł?
sumek
Proponuje stworzyć plik lang.php

  1. <?
  2.  
  3.  
  4.  if ($_GET['lang']=="ang"){
  5.  
  6.  $lang=array(
  7.  
  8. 'NAZWA' => 'tekst w jezyku ang'
  9.  
  10. );
  11. }elseif ($_GET['lang']=="de"){
  12.  
  13. $lang=array(
  14.  
  15. 'NAZWA' => 'tekst w jezyku de'
  16. );
  17. }else{
  18.  
  19. $lang=array(
  20.  
  21. 'NAZWA' => 'tekst w jezyku polskim'
  22. );
  23.  
  24. }
  25. ?>


później zapodaj w tam gdzie chcesz wyświetlać lang zrób includa a nazwy gdzie beda zmieniane po kliknieciu langa wal

  1. <?echo $lang['NAZWA']; ?>


co do rewrite to

Kod
RewriteRule ^([a-z]*).html$  /index.php?strona=$1
RewriteRule ^ang/([a-z]*).html$  /index.php?lang=ang&strona=$1
RewriteRule ^de/([a-z]*).html$  /index.php?lang=de&strona=$1

RewriteRule ^ang/  /index.php?lang=ang
RewriteRule ^de/  /index.php?lang=de


myślę że ci w czymś pomogłem smile.gif lub rozwiałem wątpliwości
pawel_
gdybym potrzebował index.php?lang=... to bym nie miał żadnego problemu;-)

Widać w złym dziale umieściłem problem (chociaż wg mnie jest on dziecinny:P). Piszę cms'a na zf, mam już sporo zrobione i potrzebuję dodać języki... wyrzucenie rewriteów ( site.com/controller/action/variables ) nie wchodzi w grę;-)

Jakieś pomysły?

co do
Cytat
RewriteRule ^ang/ /index.php?lang=ang
RewriteRule ^de/ /index.php?lang=de

musi być to 2 znakowy kod kraju (nie będę tutaj wstawiał całej listy tongue.gif nie przesadzajmy;-))
zur887
sprawdź to:
Kod
RewriteEngine On
RewriteRule ^([a-z]{2})$    /index/lang/$1 [R,L]
RewriteRule ^([a-z]{2})/(.*)    /index/lang/$1/url/$2 [R,L]
RewriteRule ^([a-z0-9]+)    /index/alias/$1 [R,L]

RewriteCond %{REQUEST_URI}%             !(js|css|html|htm|gif|jpg|png|ico)
RewriteRule ^/(.*)                      /index.php/$1 [L]
pawel_
Kod
RewriteEngine On
RewriteRule    ^([a-z]{2})(/?)$    /index/lang/$1 [R,L]
RewriteRule ^([a-z]{2})/([a-z0-9_]+)(/?)$    /index/lang/$1/url/$2    [R,L]
RewriteRule    ^([a-z0-9_]{3,})(/?)$    /index/alias/$1    [R,L]
RewriteRule !\.(js|css|gif|jpg)    index.php

To tak jakby ktoś potrzebował;-)
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.