Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP]Reguły htaccess
Forum PHP.pl > Forum > Przedszkole
Malinaa
Witam,

próbuję zaznajomić się z .htacces i regułami przyjaznych linków

Mam linki:
$link_strony = 'strona.php?sid='.$id_strony;
$link_kategorie = 'kategoria.php?kid='.$id_kategorie;

teraz chciałbym zrobić je na SEO:

SEO Link dla przykładu wygląda tak: nazwa-kategoria,1.html lub nazwa-strony,1.html , gdzie nazwa strony może być tytułem artyjułu, 1 to ID Strony

w pliku .htacces wpisuje reguly:

RewriteEngine On
RewriteRule ^([-_,$a-zA-Z0-9]+),([0-9]+)\.html$ strona.php?x=$1&sid=$2 [L]
RewriteRule ^([-_,$a-zA-Z0-9]+),([0-9]+)\.html$ kategoria.php?x=kategoria&kid=$2 [L]

Jak napisać regule, aby
RewriteRule ^co_tutaj?,([0-9]+)\.html$ strona.php?sid=$1 [L] # bez x, ktore nie bylo wczesniej potrzebne, czy tak można?

Problemy:
- musialem dodać wartość x, aby strona była otwierana i nie wiem co z nim zrobić, po co mi x=$1, albo x=kategoria ?
- kolejny problem, że w ten sposób działa zawsze pierwsza reguła od góry, nie rozpoznaje pliku strona.php. czy kategoria.php , otwiera sytonę z pierwszej regułu.

Reguły dla plików:
$link_strony = 'strona.php?sid='.$id_strony;
$link_kategorie = 'kategoria.php?kid='.$id_kategorie;
kiedy przyjazny link = nazwa-strony,1.html lub nazwa-kategoria,1.html

Proszę o pomoc
motyl-pl
Zrzuce Ci mój httacces powinien pomóc w rozwiązaniu Twojego problemu:

Kod
RewriteRule ^galeria-([^-]+),([^-]+).html$ ?strona=galeria&tytul=$1&kategoria=$2 [L]
RewriteRule ^podgaleria-([^-]+),([^-]+),([^-]+).html$ ?strona=galeria&tytul=$1&podkategoria=$2&kategoria=$3 [L]
RewriteRule ^podpodgaleria-([^-]+),([^-]+),([^-]+),([^-]+).html$ ?strona=galeria&tytul=$1&podpodkategoria=$2&podkategoria=$3&kategoria=$4 [L]


http://pamir.net.pl/galeria-dachowkiceramiczne,3.html <- obok w tym menu
Malinaa
Próbuję tak:

RewriteRule ^nazwa-strony,([^-]+).html$ ?x=strona&sid=$1 [L]

ale nazwa-strony jest zmienna, zależnie od tytułu i nic z tego nie wychodzi?
thek
Jeśli walisz w htaccess flagę L to jeśli serwer dopasuje regułę - zakończy szukanie kolejnych, bo i L = Last, czyli jeśli reguła pasuje - zakończ tutaj działanie. A że Twoje reguły dla obu są IDENTYCZNE, to strona pasuje od razu i na tej regule kończy się działanie. Nigdy nie dojdzie do dopasowania dla kategorii. Musisz to bardziej rozróżnić. Choćby strona-jakis_ciąg,id.html i kategoria-jakis_ciag,id.html

Poza tym zawsze możesz zrobić prostsze rozwiązanie. Wystarczy, że zmienisz końcówkę adresu. Dla stron użyj html, a dla kategorii htm lub php i to już powinno wystarczyć. Pamiętaj. Jeśli problemu nie można pokonać, należy go obejść smile.gif

W efekcie masz

RewriteRule ^([-_,$a-zA-Z0-9]+),([0-9]+)\.html$ strona.php?x=$1&sid=$2 [L]
RewriteRule ^([-_,$a-zA-Z0-9]+),([0-9]+)\.htm$ kategoria.php?x=kategoria&kid=$2 [L]

Zauważ, że różnica jest niemal żadna, raz jest html a raz htm, a to już dla htaccess dwa różne i tym samym problem przestał istnieć winksmiley.jpg
Malinaa
Dzięki za informacje i radę smile.gif
chciałbym jednak pozostać przy .html

Takich stron mam więcej, dla kolejnych musiałbym dać np .hm lub .h itd.

Teraz jest tak / działa:

RewriteRule ^str-([-_,$a-zA-Z0-9]+),([0-9]+)\.html$ strona.php?r=str&sid=$2 [L]
RewriteRule ^kat-([-_,$a-zA-Z0-9]+),([0-9]+)\.html$ kategoria.php?r=kat&kid=$2 [L]

Pozostaje pytanie, czy dla stron takich jak:

$link_strony = 'strona.php?sid='.$id_strony;
$link_kategorie = 'kategoria.php?kid='.$id_kategorie

jest to dobre rozwiązanie?
thek
Ależ oczywiście że może być. Najważniejsze by htaccess miał możliwość rozróżnienia seo-linków. W poprzednim wariancie nie miał prawa. Po zmianie już taka możliwość istnieje. I często właśnie poprzez ^coś_z_przodu-(regułka) się rozwiązuje problem rozpoznawania w htaccess linków. Z każdą kolejną wersją dodasz jakiś inny przedrostek i będzie spokój.
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.