Ez kivételesen nem egy Drupal bejegyzés, most egy kis apache tipp lesz.
A régi típusú url-ek, mint pl. ez: termek.php?id=373&forma=reszletes
már rég a múlté. Helyette jobban szeretjük az ilyeneket: termek/373/reszletes.
Ahhoz hogy ezt elérjük szükségünk lesz a mod_rewrite apache modulra.
A weboldal gyökér könyvtárában hozzunk létre egy .htaccess nevű fájlt. Ha már van ilyen, akkor örülünk.
Egy php mind felett
Ha azt szeretnénk, hogy egy darab php fájl szolgáljon ki minden kérést, akkor írjuk bele ezt:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Ennek hatására minden kérés ami nem egy könyvtárra vagy fájlra mutat, át lesz írva, úgy hogy az index.php szolgálja ki. A kérés paramétereit pedig a q változóban kapja meg az index.php
Nézzünk egy példát.
eredeti url:
/termek/373/reszletes
átírt url:
index.php?q=termek/373/reszletes.
Így minden kérést egy központi helyről intézhetünk. Így működik az is, ami nem Drupal-os, de így működik minden Drupal oldal is. A kódrészletet is a Drupal-hoz csomagolt .htaccess fájlból vettem.
Oszd meg és uralkodj
Egy másik lehetőség, ha különböző php fájlokat készítünk az oldal különböző részeihez, akkor valami ilyensmit kell csinálni:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^termek/([0-9]+)/(.*)$ termek.php?id=$1&forma=$2 [L]
Ennek hatása pont az lesz, amit a bevezetőben említettem.
Ebből:
termek/373/reszletes
ez lesz:
termek.php?id=373&forma=reszletes.
Persze ilyenkor az oldal többi részéhez külön-külön tartozik egy sor a .htaccess-ben. Például a kategória oldalak szép url kezeléséhez pl. egy ilyen kell:
RewriteRule ^kategoria/([0-9]+)$ kategoria.php?id=$1 [L]
Mára ennyi, remélem hasznos volt.