PHP/SQL

Przyjazne linki

Bardzo przydatną rzeczą na stronach internetowych jest tworzenie tzw ‚przyjaznych linków’. Takie linki są bardziej czytelne przez wyszukiwarki.

W tym artykule napiszę w jaki sposób można dokonać takich zmian u siebie na stronie, aby zamiast linku takiego: http://twoja_domen.pl/index.php?str=artykul&view=23 otrzymać taki: http://twoja_domen.pl/artykul_23

Na serwerach/hostingach darmowych raczej nie osiągniemy przyjaznych linków gdyż te serwery blokują działanie mod_rewrite, aczkolwiek można znaleźć firmy, które oferują darmowy hosting i mod_rewrite jest domyślnie aktywny.

Przeważnie na serwerach umieszczamy pliki w folderze public_html, więc przyjmijmy następujący układ katalogów:

|-public_html
| |-cgi
| |-test
| | |-index.php
| | |-config.php
| | |-.htaccess
| | |-artykul.php
| | |-addart.php
| | |-start.php
| |-index.html

Przyjmując powyższe drzewo katalogowe, w folderze test tworzymy plik o nazwie .htaccess (jeśli go nie ma). Po utworzeniu pliku zajmiemy się plikami index.php, artykul.php, config.php i addart.php.

Pierwszym plikiem będzie config.php – w tym pliku skonfigurujemy sobie połączenie z bazą danych, z której wyświetlane będą treści naszych artykułów:

Dobra, mamy już załatwione połączenie z bazą danych, tego chyba nie muszę tłumaczyć.
Teraz zajmijmy się plikiem index.php:

Tutaj powinno być wszystko jasne. Teraz plik start.php:

Mamy już sporo, ale jeszcze nie wszystko. Teraz tworzymy bazę danych:

Pozostało nam zrobić dodawanie artykułów do bazy i ich wyświetlanie. Za dodawanie artykułów do bazy będzie odpowiedzialny plik addart.php:

Teraz zajmijmy się wyświetlaniem naszych artykułów z bazy danych. Za to odpowiedzialny będzie plik artykul.php:

 Ok! Jeśli wszystko dobrze poszło nasz bardzo ubogi system artykułów powinien elegancko śmigać. Jeśli tak jest to od razu zwróćmy uwagę na adres jaki ma jeden, konkretny wyświetlany artykuł. Jest on w takiej postaci: index.php?go=artykul&id=1. Trochę brzydko to wygląda. Teraz zajmiemy się zmianą wyglądu naszych barzydkich URLi na przyjazne linki. Odpowiedzialny będzie za to plik .htaccess. Edytujemy go jakimś edytorem tekstowym (polecam notepad++). Najpierw pokażę jak ma wyglądać cała zawartość pliku, a później wyjaśnię co to, po co to, na co to etc…
Zawartość pliku .htaccess:

 Teraz trochę wyjaśnień. Może niektóre element wydają się być trudne do zrozumienia, bo tu jakieś literki, plusiki, cyferki i inne diabły, ale otóż nic bardziej mylnego 😉
Idąc po kolei:
Pierwsza linijka (RewriteEngine on) odpowiedzialna jest za uruchomienie mod_rewrite.

Druga linijka (DirectoryIndex index.php) określa nam plik startowy.

Trzecia linijka (RewriteBase /test/) mówi nam w którym katalogu mod ma przypisywac adresy.

Czwarta linijka (RewriteRule ^([a-zA-Z-_0-9]+)$ index.php?go=$1) opisuje jak ma wyglądać nasz adres, czyli zamiast adresu takiego: index.php?go=artykul, będziemy mieć po prostu artykul.

Piąta linijka (RewriteRule ^artykul_([0-9]+)$ index.php?go=artykul&id=$1). Tutaj dzieje się podobnie jak w poprzedniej linijce, tylko że tutaj chodzi o adres wyświetlający nam konkretny artykuł. W skrócie wygląda to tak: zamiast adresu takiego: index.php?go=artykul&id=1, mamy taki: artykul_1 – dużo krócej.

Teraz objaśnię sprawę tych wszystkich znaczków, plusików etc… Otóż to wszystko odpowiedzialne jest za tzw wyrażenia regularne. Rozłóżmy to na kawałki: ([a-zA-Z-_0-9]+).

( ) – nawiasy okrągłe mają zadanie wydzielić poszczególne wyrażenia regularne.

[ ] – nawiasy kwadratowe wydzielają grupy znaków.

a-zA-Z-_0-9 – te wszystkie literki, cyferki określają jakie znaki mogą być użyte w danym wyrażeniu regularnym. W tym przykładzie mogą to być małe litery, duże litery, cyfry, myślnik i podkreślenie.

+ – jest to znak kontrolny. Oznacza on krotność znaków w danej grupie (+ – jeden lub więcej znaków w bloku; * – zero lub więcej znaków w bloku; , – jeden, dwa lub trzy znaki w bloku).

To chyba rozjaśniło co nieco 😉

Teraz zapisujemy plik i sprawdźmy czy to działa. Otwieramy jakąś stronę i zamiast index.php?go=artykul, wpisujemy artykul – powinno zadziałać. Jeśli wyświetli nam się pod tym linkiem to samo co wcześniej to znaczy że jest wszystko w porządku. Teraz w podobny sposób sprawdźmy artykuły. Zamiast index.php?go=artykul&id=1, wpiszmy artykul_1. jeśli wszystko działa to mamy już prawie wszystko zrobione.

Teraz pozostało nam zrobić tak, aby takie linki generowały nam się same. Do tego edytujemy plik artykul.php. Znajdujemy tam taką linijkę:

Zamieniamy ją na taką:

I to już wydawało by się na tyle 😉

Kończąc ten artykuł wspomnę jeszcze o kilku korzyściach, jakie niosą za sobą przyjazne linki:

  1. Łatwe zapamiętanie linków naszej strony.
  2. Dzięki takim linkom ukrywamy strukturę naszej strony przed odwiedzającymi nas użytkownikami.
  3. Linki stają się bardziej przyjazne wyszukiwarkom = lepsze pozycjonowanie strony.