[PHP MYSQL] jak generować przyjazne linki artykułów

Mam napisany własny CMS i wymyśliłem, że warto było by zrobić tak, aby linki do działów i artykułów w działach wyświetlały się w przyjazny sposób dla użytkowników

czyli np zamiast: http://www.mojcms.pl/index.php?id=25 lub nawet http://www.mojcms.pl/index.php?subj=25&page=10

wyświetlało by się: http://www.mojcms.pl/jakis_artykul.php lub http://www.mojcms.pl/jakis_artykul.html

nie wiem jak to zrobić, jeśli ktoś wie bardzo proszę o jakieś wskazówki

zobacz:

http://wortal.php.pl/wortal/artykuly/po … jazne_urle

rozwiązanie fajne ale nie do końca o to mi chodzi - tutaj dalej jest używana wartość id artykułu a nie jego tytuł -

chodzi mi o coś takiego jak linki aktualności dobrych programów

http://www.dobreprogramy.pl/Google-udos … 15797.html

Tytuły artykułów/aktualności itp. w linkach nie mają zastępować identyfikującego je ID, a tylko maskować przed oczami użytkownika, przeglądarek, czy robotów (chociaż właściwie tytuł może być formą ID, o ile będzie niepowtarzalny). Zresztą w podanym przez Ciebie przykładzie linka z DP występują parametry. Pierwszy to “Aktualnosc”, a drugi to identyfikator danej aktualności, tutaj “15797”.

Oczywiście da się pozbyć tych parametrów, ale przy ilości artykułów na DobrychProgramach nie zawsze dałoby się wymyślić niepowtarzalny tytuł.

Poczytaj o mod_rewrite.

Wiem, że w linku na końcu jest ID i wiem też że przy dużej liczbie artykułów jakimi dysponuje podany w przykładzie vortal DP zachowanie unikalnego tytułu jest trudne. Wracając do samego linku to chodzi mi właśnie o maskowanie postaci “index.php?id=25” tytułem artykułu - a nie o zastępowanie danego linku :wink:

Wspomniany przeze mnie mod_rewrite. Korzysta się z niego edytując plik .htaccess (musi się znajdować w głównym katalogu), np. w poniższy sposób:

RewriteEngine on

RewriteRule ^artykul/([a-zA-Z0-9-]+).html$ artykul.php?art=$1

Pierwsze polecenie aktywuje mechanizm mod_rewrite.

Drugie polecenie “tłumaczy” przyjaznego URL-a na adres ze zmiennymi GET. Fragment w nawiasie to wyrażenie regularne. W pliku artykul.php odbierasz zmienną $_GET[‘art’] i sprawdzasz (np. w bazie) do czego ona prowadzi. Oczywiście możesz usunąć z linka część “artykul/” zostawiając czysty tytuł artykułu w linku :wink:.

Dzięki za pomoc :wink: