A SEO-barát, szép webcímek világa

A SEO-barát webcímek nemcsak a Google keresőjében kerülhetnek előrébb, de szebb is, profibb oldal benyomását keltik. Éppen ezért aki valamit is ad erre, annak szükséges ilyen címeket beállítania.

Példa egy nagyon csúnya webcímre: http://az.en.domainem/shop.php?modul=category&id=156

Ugyanez szépen: http://az.en.domainem/shop/processzorok

Látszik a különbség? :-)

Amire épül az egész megoldás az a webszerver rewrite engine-je, aminek a célja "csak" annyi, hogy a lekért url-t átformálja és az így létrejött címet használja úgy, mintha eredetileg is azt kérték volna le.

Az átformálás sok mindent jelenthet, akár fix továbbítást, akár csak egy elírt külső link értelmezését és továbbítását a megfelelő helyre vagy egy tetszőleges bonyolultságú keresztbe-kasul átkódolt új linket.

Ehhez szükséges egy .htaccess nevű fájl, amit a kívánt web tárhely könyvtárában kell elhelyezni (oda ahol ki szeretnénk próbálni, ez lehet a domain gyökérkönyvtára, de nyithatunk egy könyvtárat is neki). Indulásként legyen ez a tartalma:

<ifmodule mod_rewrite.c>
    RewriteEngine On
    RewriteCond     %{REQUEST_FILENAME}     !-f
    RewriteRule     ^([a-z]+)$      $1.php      [QSA]
</ifmodule>

Jelentése sorról sorra:

  1. ha támogatja a webszerverben ezt a modult, akkor ...
  2. kapcsolja be
  3. feltétel megadása: ha a lekért fájl nem létezik
  4. szabály megadása: ha a fájlnév csak angol kisbetűt tartalmaz, akkor az ugyanilyen nevű php-ra irányítsa
  5. modulhoz kapcsolódó lezárás

Fontos, hogy a szabály csak akkor érvényesül, ha az azt megelőző feltétel igaz. Ha nem igaz, akkor hiába van ott a szabály, nem juthat érvényre. A fenti példában a cím, mint fájl nem létezése a feltétel: ez azt jelenti, hogy a feltétel akkor is igaz lesz, ha a cím egy létező könyvtárra mutat (ugyanis nem azt nézzük, hogy könyvtárként létezik-e vagy sem, hanem azt, hogy fájlként létezik-e vagy sem - a könyvtár pedig nem fájl).

A szabály két részből áll: egy reguláris kifejezésből és az új cím formátumából. Emiatt (is) a mintaillesztés szabályait ismerni kell hozzá, egyébként egy jó programozó ismerni is szokta, úgyhogy később erről lesz szó külön cikkben.

A fenti mintára egy rövid magyarázat:

  • ^ a szöveg kezdete (nem jelöl karaktert, csak pozíciót)
  • $ a szöveg vége (nem jelöl karaktert, csak pozíciót)
  • [a-z] a [] jelölés egy karaktert jelez, méghozzá a két jel között felsorolt karakterek közül, kötőjelesen tól-ig karaktereket is megadhatunk, itt: a-tól z-ig (akár fel is sorolhattuk volna: [abcdefghijklmnopqrstuvwxyz])
  • + legalább egy karakter, de több is lehet
  • ( ) ennek speciális jelentése van: az így közrezárt mintára hivatkozni tudunk $1, $2, stb, attól függ hány ilyen zárójeles rész van

A ^ és $ kell ahhoz, hogy minden karaktert vizsgáljon. Ha lehagynánk valamelyiket, akkor a minta illeszkedne akkor is, ha valahol megbújna egy nem angol kisbetű.

Tehát összefoglalva az illesztést: ha egy szöveg nem üres és csak angol kisbetűt tartalmaz, akkor illeszkedik a mintára. Minden más esetben nem.

A .htaccess-ben szabály pedig a következőképpen fogalmazható meg: ha a fájlnév nem üres és csak angol kisbetűt tartalmaz, akkor a fájlnévhez hozzátűzi a .php kiterjesztést és ezt tekinti fájlnévnek. Az eredménye az lesz, hogy ezt fogja meghívni.

Ezzel máris elértünk egy beszédesebb címeket, hiszen a .php-t nem kell a továbbiakban használnunk.

Példa: Ha ilyen oldalaink vannak, akkor a fenti .htaccess használatával máris megalkottuk a kívánt eredményt: - index.php - bemutatkozas.php - szolgaltatasok.php - termekek.php - kapcsolat.php

Az eddigi http://domain.nevem/bemutatkozas.php helyett elég csak annyit beírni a böngészőbe, hogy http://domain.nevem/bemutatkozas és ugyanazt az eredményt kapjuk, mintha .php-vel írtuk volna be.

A következő részben egy ennél bonyolultabb esetet mutatok be, ami már-már a php-s keretrendszerekbe is betekintést nyújt.