Skocz do zawartości

problem z mod_rewrite


Ayla

Rekomendowane odpowiedzi

Witam.

Z góry zaznaczam, że czytałam przypięty tutorial, ale szczerze mówiać mój przypadek jest na tyle dziwny, że nie pomógł on za bardzo.

Oto co chcę osiągnąć:

link bazowy:

https://domena.pl/nazwa-kategorii/produkt

ma kierować na:

https://domena.pl/2.php?kat=nazwa-kategorii&p=produkt

zawartość pliku .htaccess

RewriteEngine On
RewriteBase /
RewriteRule ^([^.]+)/?$ 2.php?kat=$1 [L]
RewriteRule ^([^.])/([^.]+)/?$ 2.php?kat=$1&p=$2 [L]

Problem w tym, że katerogie dzialają bez zarzutu, ale url z kategorią i nazwa produktu jest w calosci traktowany jako pierwszy parametr.

Zrobiłam sobie funkcję, która wyświetla mi z geta parametr 'kat' i jest to "nazwa-kategorii/produkt".

Proszę o pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli ma kierować musi być przekierowanie 301, bo to co kombinujesz to jest odwrotne działanie do modrewrite zresztą bez sensu zamaina SEO adresowan na link z parametrami ;)

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

czemu bez sensu?

tak, jak pisałam wcześniej działa to w przypadku kategorii (https://domena.pl/nazwa-kategorii), ale dopiero jak do kategorii pojawia się produkt (https://domena.pl/nazwa-kategorii/produkt) nie działa, więc po co 301 (skoro działa w 1 przypadku)?

moim zdaniem druga reguła jest błędna i dlatego liczyłam na to, że ktoś pomoże poprawić błąd.

Odnośnik do komentarza
Udostępnij na innych stronach

@więc po co 301 -> bo napisałeś ma kierować na:, a nie przepisywać.

Poza tym w tym wyrażeniu przepisujesz wszystko, bo . oznacza kazdy znak.

RewriteRule ^([^.]+)/?$ 2.php?kat=$1 [L]

Musisz napisać bardziej precyzyjne reguły dopasowania.

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

Musisz zastąpić człon [^.]+ w pierwszym wyrażeniu tak aby dopasowywał się do występujących alfanumerycznych z wykluczenia slasha /

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

RewriteRule ^([^.]+)/?$ 2.php?kat=$1 [L]

Pasuje do wyrażenia co najmniej jednoznakowego i nie zawierającego kropki, czyli np.

nazwa-kategorii/produkt -> 2.php?kat=nazwa-kategorii/produkt

nazwa-kategorii/produkt/ -> 2.php?kat=nazwa-kategorii/produkt/

nazwa-kategorii/ -> 2.php?kat=nazwa-kategorii/

nazwa-kategorii -> 2.php?kat=nazwa-kategorii

I wszystkie je "zamieni".

Kropka umożliwia dostęp do plików .php, .html, itd.. bo one nie będą pasować do wzorca.

Flaga [L] oznacza jeśli wyrażenie pasuje to je przepisz i zakończ (nie sprawdzaj dalej).

Do drugiej reguły w tym wypadku nigdy nie dochodzi, kończy na pierwszej.

Wszystko zależy od tego jakie znaki mogą wystąpić w nazwie kategorii i nazwie produktu oraz co ważne czego skrypt ma nie przepisywać.

RewriteEngine On

RewriteBase /

RewriteRule ^([^./]+)/?$ 2.php?kat=$1 [L]

RewriteRule ^([^./]+)/([^./]+)/?$ 2.php?kat=$1&p=$2 [L]

Być może warto zamiast [^./] określić znaki dopuszczalne, np. [a-z0-9,_-] albo dodać regułkę, że jeżeli istnieje katalog o takiej nazwie, to nie przepisuj, ale to już zostawiam Tobie. Dobrej zabawy ;)

Ostatnio miałem okazję spędzić wakacje w Turcji. Znalazłem fajne informacje dla turystów. Pewnie mają tego więcej :)

Na koniec polecam artykuł Pauliny o najlepszych tabletkach na odchudzanie!

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