![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 573 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 294 Pomógł: 31 Dołączył: 2.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
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 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 573 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
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? -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
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ść ![]() 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ć ![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 573 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za informacje i radę
![]() 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? Ten post edytował Malinaa 17.11.2010, 15:44:41 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
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.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 02:39 |