Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: literówka przed domeną zależna od wyboru języka.
Forum PHP.pl > Forum > PHP
casperii
Witam panowie.

Chciałbym wykonać coś takiego, że klikając w wybór języka np. padł wybór języka strony w PL to przenosi nas na domena.pl/pl (lub pl.domena.pl) , jeżeli wybiorę niemiecką stronę to przeniesie nas na domena.pl/de (lub de.domena.pl).
Wiem , że to można przy pomocy htaccess.

  1. RewriteRule ^index\.html$ index.php [L]
  2. RewriteRule ^([^-]+)/index\.html$ index.php?lang=$1 [L]


Tylko teraz odnośnie pierwszego sposobu (domena.pl/pl), zastanawiam się jak zrobić by nie musieć w każdym zmieniać tego:

  1. RewriteRule ^logowanie\.html$ index.php?o_page=login [L]


na :

  1. RewriteRule ^([^-]+)/logowanie\.html$ index.php?o_page=login&lang=$1 [L]


i tak dla wszystkich podstron. Tak już z drugim swoim pomysłem wymiękłem i nie wiem jak to wykonać. Możecie mi panowie pomóc?
trueblue
Żeby nie zmieniać w każdej regule najlepiej by było zminimalizować liczbę reguł, np.:
Kod
RewriteRule ^([^-]+)/(logowanie|rejestracja|konto|inny_slug|jeszcze_inny_slug)\.html$ index.php?o_page=$2&lang=$1 [L]

Albo
Kod
RewriteRule ^([^-]+)/([a-z0-9\-]+)\.html$ index.php?o_page=$2&lang=$1

a w kodzie wygenerować dla nieistniejących podstron status 404.

Regułę dla lang też można uprościć, jeśli wiesz jakie będą języki, to:
Kod
^(pl|en|de|ru)/.....

jeśli nie znasz, a będą dwuliterowe, to:
Kod
^([a-z]{2})/....

tu też warto obsłużyć brak języka.
casperii
@trueblue a jak wykonać sposób drugi o którym pisałem w swoim temacie?
Mianowicie pl.domena.pl ?
trueblue
Kod
RewriteCond %{HTTP_HOST} ^(.+)\.domena\.pl$
RewriteRule ^(.*).html$ index.php?o_page=$1&lang=%1
casperii
@trueblue
Mam reguły które działają:
  1. RewriteRule ^logowanie\.html$ index.php?o_page=login [L]
  2. RewriteRule ^rejestracja\.html$ index.php?o_page=register [L]


teraz chce by te strony były tłumaczone w zależności od wyboru języka zatem dodaje:
  1. RewriteRule ^([^-]+)/logowanie\.html$ index.php?o_page=login&lang=$1 [L]
  2. RewriteRule ^([^-]+)/rejestracja\.html$ index.php?o_page=register&lang=$1 [L]


To powyżej działa, ale np jak bym miał 100 podstron to trochę czasochłonne by było edytowanie tego wszystkiego. Dlatego szukam sposobu by to skrócić, ale podany przez Ciebie sposób nie działa:

  1. RewriteRule ^([^-]+)/([a-z0-9\-]+)\.html$ index.php?o_page=$2&lang=$1


ani nawet bez języka też nie działa:

  1. RewriteRule ^([a-z0-9\-]+)\.html$ index.php?o_page=$1


Teraz zrozumiałeś mnie ? smile.gif
trueblue
Nie rozumiem, na początku piszesz o mojej regule, a potem, że Twoja reguła przenosi na główną.

Ta reguła:
Kod
RewriteRule ^([^-]+)/([a-z0-9\-]+)\.html$ index.php?o_page=$2&lang=$1

dla: http://domena.pl/ru/abc.html
wygeneruje: http://domena.pl/index.php?o_page=abc&lang=ru


Zastąpiłeś wszystkie reguły (logowanie, rejestracja, itp.) jedną regułą?
Jeśli tak, to pokaż .htaccess po zmianach.
casperii
@trueblue

  1. <IfModule mod_rewrite.c>
  2. Options +FollowSymLinks
  3. RewriteEngine on
  4. RewriteBase /
  5.  
  6. RewriteCond %{HTTP_HOST} !^www.tajemnica.pl$
  7. RewriteCond %{HTTP_HOST} ^(www\.)?(.+).tajemnica.pl$
  8.  
  9. RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
  10. RewriteCond %{REQUEST_FILENAME} -d [NC]
  11. RewriteRule .* - [L]
  12.  
  13.  
  14. ## BAD INDEX PAGE
  15. RewriteRule ^index\.html$ index.php [L]
  16. RewriteRule ^([^-]+)/([a-z0-9\-]+)\.html$ index.php?o_page=$2&lang=$1
  17. </IfModule>
trueblue
Sprawdziłem na wycinku:
Kod
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ index.php [L]
RewriteRule ^([^-]+)/([a-z0-9\-]+)\.html$ index.php?o_page=$2&lang=$1

Działa.
casperii
@trueblue

Możesz podać przykład bo nie bardzo rozumiem. A nie można w jakiś magiczny sposób po prostu dołożyć pl/ w adres - pozostałych linków bym już nie musiał edytować.

domena + pl + regułki już utworzone.
trueblue
Gdybyś wyjaśnił wcześniej, że nazwy plików nie odpowiadają slug'om, byłoby łatwiej.
Musisz sobie utworzyć jakąś tablicę translacji (w PHP), gdzie dla różnych nazw slugów będziesz kierował do jednego pliku.
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.