Inne

Jak włączyć przyjazne linki dzięki mod_rewrite?

Powszechnie panuje stereotyp, że wyszukiwarka Google słabo radzi sobie z linkami typu: nazwastrony.pl?id=skrypty&go=php. Jest to błędne myślenie – amerykański robot w tej chwili dobrze już indeksuje tego typu zbudowane strony. Nie mniej jednak warto znać, chociaż w podstawie, zasady przyjaznego przepisywania linków, czyli mod_rewrite. Na samym początku powinniśmy sprawdzić czy nasz serwer ma włączony system przyjaznych linków. W tym celu musimy posłużyć się funkcjąphpinfo(). W wyświetlonym przez naszą przeglądarkę oknie wyszukujemy przedział: Loaded Modules, a następnie tam szukamy informacji o mod_rewrite.

Jeżeli wszystko przebiegło po naszej myśli i mamy uruchomioną na serwerze obsługę przyjaznych linków możemy przystąpić do kolejnego kroku. Jeśli natomiast usługa przepisywania jest niedostępna, musimy poprosić o jej włączenie naszego administratora.
Przyjmijmy, że na naszej stronie (zbudowanej oczywiście przy pomocy php) posiadamy linki typu:

www.kortas.info?kategoria=skrypty&typ=php
www.kortas.info?kategoria=skrypty&typ=ajax

Dzięki możliwości przepisywania uzyskamy efekt:

www.kortas.info/skrypty/php/
www.kortas.info/skrypty/ajax/

Przez ten zabieg adres strony będzie czytelniejszy nie tylko dla wyszukiwarek ale i dla potencjalnego internauty.

Na początek tworzymy nowy plik o nazwie .htaccess i zapisujemy go w głównym katalogu ze stroną. Uzupełniamy go następującym kodem:

RewriteEngine On 
RewriteBase /folder_ze_strona/
RewriteRule ^/?(.*)/(.*)/$ index.php?kategoria=$1&typ=$2 [NC,L]
---tutaj pozostawiamy pusty wiersz---

A teraz krótkie omówienie. Pierwsza linijka informuje serwer, że zostanie użyta metoda mod_rewrite. W drugim wierszu deklarujemy ścieżkę do folderu z naszą stroną w odniesieniu do głównego katalogu (np. /folder1/folder2/). Jeżeli natomiast nasza strona znajduje się w głównym katalogu wstawiamy znak /. W kolejnym wierszu informujemy serwer jak będą wyglądały przepisane linki. Symbol (.*) odpowiada za użycie dowolnych znaków z zakresu. Następnie wpisujemy index.php, a potem podmieniamy nasze zmienne, przypisując je do nowych (koniecznie musimy użyć takiego formatu nowych zmiennych: $1, $2, $3 itd.). Na koniec pozostawiamy jeden pusty wiersz.

Teraz pozostaje nam zamienić wszystkie linki w naszym kodzie html na takie:

<a href="folder_ze_strona/skrypty/php/">php</a>
<a href="folder_ze_strona/skrypty/ajax/">ajax</a>

W miejscu gdzie wpisałem folder_ze_stroną należy wpisać tą samą ścieżkę co w drugim wierszu w pliku.htaccess. Pamiętajmy także o zmianie ścieżki w odnoszącej się do naszego arkusza CSS – tam także musimy dodać na początku nazwę naszego folderu, w którym znajduje się strona.

<link type="text/css" rel="stylesheet" href="folder_ze_stroną/arkusz.css">

W razie jakichkolwiek problemów z metodą przepisywania linków mod_rewrite proszę o kierowanie swoich pytań bezpośrednio w komentarzach pod artykułem.

komentarze 3

  • Awatar
    Unbreak

    28 maja 2012 14:57

    A co jakbyśmy chcieli w adresach podstron mieć html na końcu? (nie wpisów, a podstron)

    Odpowiedz
  • Awatar
    Angelika

    14 listopada 2012 23:32

    A co jeśli mod_rewrite nie jest włączony na serwerze ? Jak go aktywować przez cpanel ?

    Odpowiedz
    • Awatar
      Michał Kortas

      15 listopada 2012 12:08

      To wszystko zależy od dostawcy hostingu. Na początku proponowałbym skontaktować się z biurem obsługi klienta, aby włączyli mod_rewrite lub poinstruowali jak to zrobić.

      Odpowiedz

Zostaw odpowiedź