Co nie co chciałbym przedstawić o przepisywaniu linków za pomocą mod_rewrite, czyli tak zwanym Seo URL (z ang. Search engine optimization), przepisywaniem linków, friendly url itp. Cała sztuka polega na tym, że przesyłamy tylko jednego $_GET’a, a następnie za pomocą php obrabiamy wynik, i interpretujemy wartości przedstawione w poszczególnych elementach tablicy. Gdyż właśnie w niej będziemy przechowywać ścieżki.
Mod rewrite
No to do dzieła przykład użycia, plik .htaccess:
1 2 3 4 5 6 7 8 9 | Options +FollowSymLinks DirectoryIndex index.php <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] </IfModule> |
Odnośnie RewriteCond działa jakby if, więc !-f nie ma być plikiem, a !-d nie ma być katalogiem, jeżeli jest ok, to idzie dalej, flaga L informuje apache o zakończeniu działania skryptu.
Mamy już gotowy plik .htaccess, teraz możemy przejść do napisania funkcji która nam ładnie podzieli całego $_GET’a.
1 2 3 4 5 6 7 8 9 | <?php function Route() { if($_GET['q'] != '') { $fetch = explode('/', $_GET['q']); } } ?> |
I wtedy mamy linki w postaci:
http://www.jakas-strona.pl/jakis/adres/ktory/widzi/user
a Ty widzisz to tak:
1 2 3 4 5 6 7 8 | Array ( [0] = "jakis" [1] = "adres" [2] = "ktory" [3] = "widzi" [4] = "user" ) |
Albo (pomysł z forum.php.pl):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php function Route() { if($_GET['q'] != '') { $fetch = explode('/', $_GET['q']); $n = count($fetch); $_PARAM = array(); for ($i = 0; $i < $n; $i += 2) { $_PARAM[$fetch[$i]] = $fetch[$i+1]; } } } |
I adresy mamy w postaci:
http://www.jakas-strona.pl/kategoria/5/produkt/6
będziemy mieli dostęp wtedy do tablicy $_PARAM tak jak z $_GET, czyli
1 2 3 4 5 6 | <?php echo $_PARAM['kategoria']; // powinno dać nam 5 echo $_PARAM['produkt']; // ... 6 print_r($_PARAM); ?> |
Seo URL
Czym jest tak na prawdę te Seo URL? I czy to wszystko jest mi na prawdę potrzebne?
Odpowiedź jest dwojaka, jak wiemy algorytmy google z rankingiem są cały czas aktualizowane, chociaż google ostro twierdzi że ich nie tyka. Wystarczy wejść na Polskie forum odnośnie optymalizacji witrny i pozycjonowania i możemy przeczytać co prawdziwi pozycjonerzy o tym myślą. Co do rankingu dzięki seo url, po troche jest w tym prawda, chodź najważniejsze są linki prowadzące do Twojej witryny. Roboty zbierają dane z adresu też, dzięki temu łatwiej jest Ci się znaleźć w indeksie google, zwróć uwagę przy wyszukiwaniu w google, że podana fraza szukana jeżli znajduje się w adresie strony, jest przez google podświetlana.
Słów kilka na zakończenie
Używać co kto woli, w moim przypadku nie ma tablicy asocjacyjnej, jest zwykła tablica iteracyjna. Url’e mogą być krótsze chodź nie muszą, przy takim podejściu do adresów, należy pilnować się o adresacje w tabeli. I pamiętajmy, pierwszy element tablicy to nie jest 1, tablica 30-elementowa nie ma ostatniego elementu $tab[30].
Czego tutaj brakuje? Oczywiście filtrowania $_GET['q']. Do tego wrócimy w bliższym czasie.


%H:%i
Wg mnie z forum.php.pl jest lepsze rozwiązanie.