Login| Rejestracja| Facebook| Kanał RSS

Silnik przepisywania adresów URL

GyniO 19.06.2010 0 komentarzy

Dzisiaj zadano mi pytanie

Cytat:

Czy chciało Ci się rozdzielać każdy artykuł, podstronę http://gynio.pl na osobne pliki html?


Otóż udzielam odpowiedzi: Nie... Gdyby tak rzeczywiście było miał bym spory mętlik w plikach.
Linki może na takie wyglądają, ale kto powiedział, że tak jest naprawdę?

Kod mojej strony to parę plików, a za cały mechanizm strony odpowiada index.php.
Strona opiera się na linkach z końcówką .html, choć ani jeden plik o takim rozszerzeniu nie znajduje się w folderze strony.

No to jak to możliwe, że wyświetla się treść pliku o nazwie, która nie istnieje?
Link kieruje nas na plik o innej nazwie niż rzeczywiście jest to podane. Użytkownik strony nie jest w stanie tego zauważyć.

Taką możliwość przekierowania daje nam MOD REWRITE (regułka .htaccess) i $_GET (php).
MOD REWRITE – pozwala na przechwytywanie żądań i przerobić je gdzie indziej.
PHP, a dokładniej $_GET jest odpowiedzialny za przyjmowanie żądań.

Kod:
index.php
Kod
1
2
3
4
5
if(isset($_GET['page'])){
    echo $_GET['page'];
}else{
    echo "Strona główna";
}

.htaccess
Kod
1
2
RewriteEngine on
RewriteRule ^([^/]+).html? index.php?page=$1 [L,QSA]

Jak widać skrypty są krótkie i proste do zrozumienia.

Jednak skupmy się na linkach.
MOD REWRITE: http://gynio.pl/news.html
PHP: http://gynio.pl/index?page=news
W obu przypadkach wyświetli się nam to sama treść, jedyną różnicą jest sam link.

Wiadomo, że link z MOD REWRITE jest przyjemniejszy dla oczu, przez co stosuje się go do skrócenia adresu strony.
Należy pamiętać, że boty wyszukiwarek biorą pod uwagę wygląd linków, przez co linku pomagają pozycjonowanie strony w wyszukiwarce, o którym warto pamiętać przy budowie większości stron.

MOD REWRITE jest modułem Apache, przy zakupie hostingu lub przy pisania skryptu opartego o MOD REWRITE - proszę zwrócić uwagę czy taki moduł jest zainstalowany.

Inne przykłady użycia:
Kod
1
2
RewriteRule ^news-([0-9]+)?/ index.php?page=news&strona=$1 [L,QSA] // tylko liczby
RewriteRule ^news/([0-9]+)-([^/]+)?/ index.php?page=news&strona=$1 [L,QSA] // ([^/]+) nie będzie brane pod uwagę


Pytania do artykułu możecie zadawać w komentarzach.


Podlinkuj ten artykuł.

Gadu Gadu Facebook Nasza Klasa Google Twitter Blip wykop

Komentarze

Brak


Dodaj komentarz




Odśwież Captche







Dodaj komentarz...