Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: htaccess - przyjazne odnośniki
Forum PHP.pl > Forum > Serwery WWW > Apache
marekge
Zastanawiam się na pewną sprawą.

Gdy tworzę przyjazne odnośniki dla strony gdzie przykładowy odnośnik wygląda tak:
index.php?kategoria=przysmaki&art=ciastka
To sprawa jest prosta i za pomocą wyrażenia regularnego mogę to łatwo zamienić dla wszystko odnośników na:
/przysmaki/ciastka/

Jednak co w sytuacji gdy odnośnik początkowo wygląda tak:
index.php?kategoria=5&art=137
W jaki sposób mogę za pomocą reguł w htaccess uzyskać taką formę:?
/przysmaki/ciastka/

Jedyne rozwiązanie na jakie wpadłem to napisać modulik w php który po każdym dodaniu artykułu edytuje .htaccess i doda regułą że kategoria=5 to przysmaki a art=37 to ciastka itd. Jest to jednak naiwne rozwiązanie i głupie (i z tego co widzę w cmsach na pewno się tak nie robi). W związku z tym mam pytanie do doświadczonych użytkowników jak to się odbywa? skąd pobiera się odpowiednie wartości?
erix
Google: slug.
marekge
Jak byś mógł sprecyzować byłbym bardzo wdzięczny.
Sama fraza "slug" nie rzuca za ciekawych wyników snitch.gif, a w połączeniu z "htaccess slug" równiez nie widzę nic co by mi pomogło.
Być może jest to dla Ciebie sprawa trywialna, jeżeli można to proszę o konkretny arytykuł ;-)
erix
Mózg jeszcze na imprezie sylwestrowej?

http://pl.lmgtfy.com/?q=generate+slug
marekge
Nie wiem czy mnie do końca zrozumiałeś.
Pokazujesz w jaki sposób ze frazy typu " Artykuł O ósmej Żabce" zrobić ładną seo-friendly formę (sluga) czyli np "artykul-o-osmej-zabce".
Z tym nie mam żadnego problemu ... ba nawet zapisuję taką ładną formę w bazie przy każdym wpisie...

Pytałem jak zamienić adres index.php?kategoria=5&art=137 na zwierzece-5/artykul-o-osmej-zabce-137?
Przecież z poziomu reguł mod_rewrite nie mogę wyłuskać tych informacji z bazy czy pliku php.... pytam się w takim razie w jaki sposób mogę je pobrać w htaccess aby ładnie obrobić.

No chyba że jedyny sposób to generowanie linków w stylu "index.php?kategoria=5&art=137&kat_name=zwierzece&art_name=artykul-o-osmej-zabce" i wtedy obrobienie ich w htaccess na przyjazne linki zwierzece-5/artykul-o-osmej-zabce-137 aczkolwiek wydaje mi się to nieco naiwne.

Można to zrobić w inny sposób? A moze powyższe rozwiązanie jest prawidłowe i właśnie tak się robi?
zdemotywowany
Musisz przekazać nazwę pliku do skryptu php, który je odpowiednio przetworzy chyba, nie wiem do końca czy tak jest, więc nie sugeruj się za bardzo. Poczekajmy na odpowiedź kogoś kto wie dokładnie jak to zrobić.
marekge
Cytat(zdemotywowany @ 16.01.2012, 13:32:11 ) *
Musisz przekazać nazwę pliku do skryptu php, który je odpowiednio przetworzy chyba, nie wiem do końca czy tak jest, więc nie sugeruj się za bardzo. Poczekajmy na odpowiedź kogoś kto wie dokładnie jak to zrobić.

Pomyliłeś tematy?
zdemotywowany
Nie, w tym temacie miałem zamiar to napisać.

Minuta szukania: http://nospor.pl/ladne-urle.html
marekge
Minuta szukania i zero odpowiedzi...
uupah5
odnoszę się do pierwotnego pytania.

skąd pochodzi request typu id=5&sub_id=10 ? tzn skąd internauta wie, że ma użyć wartości 5 i 10? jeśli ta wiedza nie pochodzi z inne źródła niż kod twojej strony, to odpowiedź jest: niczego nie zamieniać w htaccess.
zadbać o to, żeby przyjazne linki były w kodzie html już na etapie jego zwracania przegladarce. innymi słowy - wartość id i sub_id nie wychodzi w ogóle na zewnątrz (przy okazji osiągasz większe bezpieczeństwo samej strony)
zdemotywowany
Cytat(marekge @ 16.01.2012, 15:03:14 ) *
Minuta szukania i zero odpowiedzi...


Przecież dałem Ci link? Czego nie potrafisz tam znaleźć. Ja wpisałem w Google ładne url i mi wyskoczyło kilka ciekawych stron. Ile razy dziennie korzystasz z tej przeglądarki?
marekge
Cytat(uupah5 @ 16.01.2012, 15:19:11 ) *
odnoszę się do pierwotnego pytania.

skąd pochodzi request typu id=5&sub_id=10 ? tzn skąd internauta wie, że ma użyć wartości 5 i 10? jeśli ta wiedza nie pochodzi z inne źródła niż kod twojej strony, to odpowiedź jest: niczego nie zamieniać w htaccess.
zadbać o to, żeby przyjazne linki były w kodzie html już na etapie jego zwracania przegladarce. innymi słowy - wartość id i sub_id nie wychodzi w ogóle na zewnątrz (przy okazji osiągasz większe bezpieczeństwo samej strony)

Tak w chwili obecnej robie.
Zastanawiałem się tylko czy z poziomu htaccess można w jakikolwiek sposób odnieść się do bazy by np powiązać konkretny id z slug-wartością.

Swoją drogą w chwili obecnej działają mi oba adresy czyli:
(Brzydki)strona.pl/index.php?id=9&cat=costam&art=fajny-super-art
(Ładny)strona.pl/9-costam/fajny-super-art.html
Czy mogę w typowej regule htaccess tworzącej przyjazne link wyłączyć adres brzydki* ? (wchodząc na strona.pl/index.php?id=9&cat=costam&art=fajny-super-art powinno pojawić się strona.pl/9-costam/fajny-super-art.html w pasku adresu):
  1. RewriteRule ^view/(.*)/(.*)/(.*).html$ index.php?ip=$1&kat=$2&art=$3 [L]

Zastanawiałem się czy nie jest to czasem kwestia zmiany po prostu flagi ale R=301,L zwracało bzdurne i wręcz odwrotne wyniki.

Panie @zdemotywowany skończ Pan pisać głupoty.
Jeżeli chcesz pomóc to następnym razem chociaż raz przeczytaj pytanie....

erix
Cytat
Zastanawiałem się tylko czy z poziomu htaccess można w jakikolwiek sposób odnieść się do bazy by np powiązać konkretny id z slug-wartością.

Zapomnij, htaccess, to nie jest remedium na wszystko. Od tegou jest router.
marekge
Też już się o tym przekonałem :-)
Chciałem sobie niepotrzebnie skomplikować życie - ot rozwiązałem całość jako proste obrobione wartości przekazywane GET'em.
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.