Skocz do zawartości

Problem z rewrite


Ikky

Rekomendowane odpowiedzi

mam takie linki

www.strona.pl/index.php?lang=pl

www.strona.pl/kontakt.php?lang=pl

czy da sie zrobić tak żeby pierwszy link był taki

www.strona.pl/pl

a drugi

www.strona.pl/pl/kontakt

na razie udało mi się zrobić tak ze

www.strona.pl/index.php?lang=pl

zamienia się na www.strona.pl/pl

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f


RewriteCond %{REQUEST_URI} !(.*)/$


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

ale jak dodaje kontakt to już wariuje :/

Odnośnik do komentarza
Udostępnij na innych stronach

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f


RewriteCond %{REQUEST_URI} !(.*)/$


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

RewriteRule ^([^-]+)$/kontakt kontakt.php?lang=$1 [L]

przy takim czyms nie wyłapuje w ogole języka + nie pokazuj sie kontakt.php tylko index.php i jeszcze nie ma stylu

Odnośnik do komentarza
Udostępnij na innych stronach

Osobiście stosuje rozwiązanie:

RewriteRule ^en/ .

I wersję językową wyłapuje w PHP poprzez parsowanie zmiennej $_SERVER['REQUEST_URI']. Można wtedy ręcznie ustawić $_GET['lang'] = $wykryty_lang;

Popularny wpis na php devblog: mod rewrite. Ranking systemów, czyli wybierz darmowy cms.

Odnośnik do komentarza
Udostępnij na innych stronach

RewriteRule ^pl$ index.php?lang=pl [L]
RewriteRule ^pl\/kontakt$ kontakt.php?lang=pl [L]

lub np:

RewriteRule ^(pl|de|uk)$ index.php?lang=$1 [L]
RewriteRule ^(pl|de|uk)\/kontakt$ kontakt.php?lang=$1 [L]

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Irek Twoj kod przy żądaniu uk/kontakt wywołuje index.php, a nie kontakt.php

Powinno być:

RewriteRule ^([a-z]+)$ index.php?lang=$1 [L]
RewriteRule ^([a-z]+)\/kontakt$ kontakt.php?lang=$1 [L]

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Irek Twoj kod przy żądaniu uk/kontakt wywołuje index.php, a nie kontakt.php
hmm, jak to się dzieje? uk/kontakt nie pasuje do wyrażenia ^(.+)/kontakt ?

Nie znam się na pozycjonowaniu, ja tu tylko zużywam transfer i miejsce w sql.

Roman Kluska ujawnia: nadchodzi INFLACYJNY ARMAGEDON!

 

Odnośnik do komentarza
Udostępnij na innych stronach

Co dziwniejsze print_r($_GET) w tym wypadku daje taką tablicę:

Array

(

[lang] => index.php

)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

;) no nie powiem, ale dla mnie też jest to zagadka

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

mod_rewrite działa tak że wykonuje reguły w pętli wiele razy, do momentu aż żadnej nie dopasuje albo url się nie zmieni (nie pamiętam dokładnie). [L] działa zaś tak że blokuje wykonanie reguł poniżej, ale nie przerywa głównej pętli (sam bym chciał wiedzieć co zrobić żeby ją przerwać ;)). W tym konkretnym przypadku były więc takie przekierowania:

uk/kontakt => kontakt.php?lang=uk => index.php?lang=kontakt.php => index.php?lang=index.php

Żeby się przed tym zabezpieczyć trzeba by dodać komendę RewriteCond sprawdzającą czy parametr lang jest już obecny w %{QUERY_STRING}

Polecam moje pluginy do WordPress'a: WyPiekacz, Meta SEO Pack, User Locker, Google Integration Toolkit i wiele innych :)

Poradnik Webmastera ‰ Ostatnio na blogu:

PoradnikWebmastera-Blog.1.gif

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności