Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PrettyURL jak zrobić to od zera?
Avatarus
post
Post #1





Grupa: Zarejestrowani
Postów: 304
Pomógł: 0
Dołączył: 12.12.2006
Skąd: Pszów

Ostrzeżenie: (0%)
-----


No więc tak, mam tablicę w bazie, gdzie powiedzmy są 3 pola: id,tytul i tresc

Skrypt działa tak że pobiera dane z tej tabeli i wyświetla listę tytułów z tej tabeli.
Każdy tytuł jest linkiem o takiej budowie: strona.php?id=X
gdzie X jest numerem id strony w tej tabeli.

Wszystko działa, ale jak to zrobić żeby były to linki przyjazne? np strona/testowa-strona
?
Gdyby była stałą ilość linków to bym sobie poradził, ale z racji tego że jest to zmienne, to stwarza to pewien problem dla mnie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Musisz stworzyć kod pośrednicczący, który przetworzy linki do postaci zrozumiałej dla serwisu. Zakończy sie to tym, że będziesz miał kod, który pobierze ów tekst z url, sprawdzi w bazie czy taki istnieje, i jeśli tak, to zwróci do aplikacji jego Id. Z tym już strona sobie poradzi.
Go to the top of the page
+Quote Post
Eternal Soul Har...
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 1
Dołączył: 28.02.2011

Ostrzeżenie: (0%)
-----


A może strona/<id>/testowa-strona? Niektórzy (np. ja) stosują takie rozwiązanie. Proste i ładnie indeksują je wyszukiwarki.
Go to the top of the page
+Quote Post
thek
post
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




Może być. Wtedy ma o niebo prościej. Za pomocą htaccess od razu przekieruje na plik prawidłowy, bez pośrednika (IMG:style_emoticons/default/smile.gif)

Jedynie w regule htaccess zrobi ^strona/([0-9]+)/([.*]) strona.php?id=$1 lub jak tam chce by pasowało. Ja pisałem o pośredniku (w sumie spełni on rolę mixu routera i dispatchera), bo widziałem, że nie ma mieć ID w linku, więc uznałem, że ma w bazie zapisany linkt seo i to jego szuka, a nie chcesz modyfikować już istniejącego skryptu i jakoś chce to połączyć (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Avatarus
post
Post #5





Grupa: Zarejestrowani
Postów: 304
Pomógł: 0
Dołączył: 12.12.2006
Skąd: Pszów

Ostrzeżenie: (0%)
-----


no niby wszystko fajnie ale problem mam lekki
http://avatarus.biz/trzecha_cms/
Klikając na nazwę jakiegoś newsa powinny pojawić się jego detale.
tzn w domyśle był to link news.php?id=X
zamaskowałem to w htaccess:
RewriteRule ^/news/([0-9]+)/(.*) /news.php?id=$1 [L]
no i niby linki wchodzą, ale tak jak by nie przekazywały zmiennej $1

najśmieszniejsze jest to że mam lustrzane odbicie tego skryptu lokalnie na wampie i działa dobrze.
Czy nie ma więc jakiegoś problemu z serwerem? działam na ovh.pl

Dzięki
Go to the top of the page
+Quote Post
thek
post
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




Może w samym skrypcie źle odbierasz parametry. inna konfiguracja serwera lokalnego i produkcyjnego może sprawić, że zmienne się nie ustawiają. Zrób sobie debug zmiennych w skrypcie a sam zapewne zauważysz że id ustawia się jako 0 ;)Dlatego daj kawałek kodu gdzie masz zmienną id tworzoną.
Go to the top of the page
+Quote Post
Avatarus
post
Post #7





Grupa: Zarejestrowani
Postów: 304
Pomógł: 0
Dołączył: 12.12.2006
Skąd: Pszów

Ostrzeżenie: (0%)
-----


potrzebuje z tym pomocy.
linku news/18/test-bbcode nie łapie
z taką dyrektywą:
Kod
RewriteRule ^news/([0-9]+)/([0-9a-z-]+)$ news.php?id=$1 [L,QSA,NC]

ale link news-18-bbcode
z bardzo podobną dyrektywą
Kod
RewriteRule ^news-([0-9]+)-([0-9a-z-]+)$ news.php?id=$1 [L,QSA,NC]

już łapie...czemu?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 21:13