Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> literówka przed domeną zależna od wyboru języka., jak wykonać taki skrypt.
casperii
post 14.10.2015, 19:19:30
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
trueblue
post 14.10.2015, 19:36:54
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 14.10.2015, 19:42:27
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 14.10.2015, 19:49:02
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 14.10.2015, 20:29:18
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 ? smile.gif

Ten post edytował casperii 14.10.2015, 20:51:47
Go to the top of the page
+Quote Post
trueblue
post 14.10.2015, 20:32:13
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 14.10.2015, 20:56:39
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 14.10.2015, 21:11:02
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 14.10.2015, 21:26:07
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 14.10.2015, 21:32:26
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:07