Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: htaccess - pytanie odnośnie mod rewrite
Forum PHP.pl > Forum > Serwery WWW
frydry
Witam.
Tworzę stronę, na której będą występować linki w takiej postaci - strona.pl/index.php?page=strona&category=kategoria&product=1
Utworzyłem regułę w .htaccess:
  1. RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)?$ index.php?page=$1&category=$2&product=$3

Więc przykładowy link będzie teraz wyglądał tak: strona.pl/strona/kategoria/1, a chciałbym, żeby zamiast id produktu w linku była jego nazwa czyli musiałbym utworzyć kilkadziesiąt linii na taki wzór:
  1. RewriteRule ^strona/kategoria/nazwa_produktu?$ index.php?page=strona&category=kategoria&product=1

I teraz moje pytanie. Czy wpłynie to znacznie na optymalność strony i jej szybsze funkcjonowanie ?
I czy w ogóle jest sens tworzenia takich linków i czy byłyby one poprawne z polskimi znakami?
Czytałem, że linki dużo wpływają na pozycjonowanie, więc opłacalne by to było?
Pozdrawiam i czekam na odpowiedź.
kapslokk
Bez sensu jest to robić w htaccessie. Tzn w takiej formie jak Ty chcesz to zrobić. Poczytaj sobie co to jest slug. Ewentualnie pomyśl o linku w stylu:
strona/kategoria/1-nazwa_produktu gdzie id będziesz miał przekazywane zawsze na poczatku.
frydry
Niestety nie mogę nigdzie znaleźć jakieś chociażby poradnika po polsku, znalazłem parę po angielsku, ale chciałbym dobrze zrozumieć to. Pozostaje mi więc zostać przy htaccess :/
kapslokk
Ale czego nie rozumiesz w tym poradniku? Slug to po prostu np. tytuł strony, obrobiony tak, żeby nie było w nim znaków specjalnych, spacji czy ogonków. Zapisujesz go do bazy w unikalnym polu, aby nie dało się go zdublować i wtedy zamiast podawać id podajesz unikalny slug. Druga opcja ta z id-jakis tekst, nie wymaga od Ciebie nawet tej unikalności bo strony będą rozróżniane przez id. Kwestia tego, żeby napisać odpowiednie przekierowanie w htaccesie, ale jedno a nie tyle ile masz stron.
frydry
Cytat(kapslokk @ 8.08.2015, 15:14:07 ) *
Ale czego nie rozumiesz w tym poradniku? Slug to po prostu np. tytuł strony, obrobiony tak, żeby nie było w nim znaków specjalnych, spacji czy ogonków. Zapisujesz go do bazy w unikalnym polu, aby nie dało się go zdublować i wtedy zamiast podawać id podajesz unikalny slug. Druga opcja ta z id-jakis tekst, nie wymaga od Ciebie nawet tej unikalności bo strony będą rozróżniane przez id. Kwestia tego, żeby napisać odpowiednie przekierowanie w htaccesie, ale jedno a nie tyle ile masz stron.

Niestety nie mam pojęcia jak to zrobić, ponieważ nie znam wyrażeń regularnych htaccess. Przetwarzanie tekstu na sług już ogarnąłem, ale nie mam pojęcia jak to zastosować, aby otrzymać link w takiej postaci jak napisałeś, aby wystarczała do tego tylko jedna linijka w htaccess tiredsmiley.gif
Bo nie mam problemu z utworzeniem linku slug, tylko z tym, jak pobrać dane id w htaccess kiedy link by wygłądał np. tak: strona.pl/strona/kategoria/1-nazwa_produktu

//EDIT
Poradziłem sobie, dostałem natchnienia, pokombinowałem i chyba wykombinowałem haha.gif
Jakby ktoś jeszcze miał problemy zrobiłem funkcję która za pomocą explode oddziela w zmiennej product id od reszty:
  1. function product_page_id() {
  2. $all = $_GET['product'];
  3. $exp = explode("-", $all);
  4. return $exp[0];
  5. }

i wszędzie gdzie jest wykorzystuje id produktu wstawiłem tę funckję, a w htaccess dałem taką linjkę:
  1. RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)-([^/\.]+)?$ index.php?page=$1&category=$2&product=$3-$4


Jeśli coś było nie tak, lub mój pomyśl jest beznadziejny, to proszę o info. shades.gif
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.