Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> literówka przed domeną zależna od wyboru języka., jak wykonać taki skrypt.
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


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





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


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





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@trueblue a jak wykonać sposób drugi o którym pisałem w swoim temacie?
Mianowicie pl.domena.pl ?
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Kod
RewriteCond %{HTTP_HOST} ^(.+)\.domena\.pl$
RewriteRule ^(.*).html$ index.php?o_page=$1&lang=%1


Ten post edytował trueblue 14.10.2015, 19:49:46
Go to the top of the page
+Quote Post
casperii
post
Post #5





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@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 ? (IMG:style_emoticons/default/smile.gif)

Ten post edytował casperii 14.10.2015, 20:51:47
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


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.

Ten post edytował trueblue 14.10.2015, 20:52:48
Go to the top of the page
+Quote Post
casperii
post
Post #7





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@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>


Ten post edytował casperii 14.10.2015, 20:57:07
Go to the top of the page
+Quote Post
trueblue
post
Post #8





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


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





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@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.

Ten post edytował casperii 14.10.2015, 21:37:36
Go to the top of the page
+Quote Post
trueblue
post
Post #10





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


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.
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: 1.10.2025 - 17:18