153 Kezdőlap - Webszerkesztés - .htaccess
ujdomainek.hu

.htaccess

és a keresőbarát webcímek

Jegyzet

A .htaccess fájl - így, ponttal az elején, kiterjesztés (vagyis fájltípus) nélkül - az Apache webszerver egyik meglehetősen fontos fájlja. Tartalmának módosításával számos olyan weboldalakra vonatkozó feladatot lehet megvalósítani, melyek elsősorban nem programozási, hanem a szerver működését meghatározó kérdések. Ilyenek lehetnek például: A felsorolt - és további - lehetőségek elméletének megismerését az alábbi képre kattintva elérhető magyar nyelvű leírás, a Htaccess tutorial című tananyag minél alaposabb elolvasásával érdemes kezdeni.
A jegyzet forrása a htaccess.petertoth.hu oldal.
Mindezekből mi ezen az oldalon a keresőoptimalizálás szempontjából leginkább érdekes kérdéssel, vagyis a barátságos URL-ek kialakításának módjával fogunk foglalkozni.

Mit is jelentenek a barátságos URL-ek?

Egy-egy weboldal esetén általában a következőket szeretnénk megvalósítani:
Egy PHP-s menüt tartalmazó weboldal egyes oldalainak címei az alábbiak mintájára alakulnak:
  • localhost/sajatoldal/?p=aktualitasok
  • localhost/sajatoldal/?p=elerhetoseg
  • localhost/sajatoldal/?p=termekek&cs=kekszek
  • localhost/sajatoldal/?p=termekek&cs=edessegek&t=bountycsoki
  • localhost/sajatoldal/?p=termekek&cs=edessegek&t=sportszelet
Ez a forma nem igazán jól olvasható, és a keresőrobotok sem szeretik. Sokkal jobban nézne ki helyettük az alábbi kialakítás:
  • localhost/sajatoldal/aktualitasok/
  • localhost/sajatoldal/elerhetoseg/
  • localhost/sajatoldal/termekek/kekszek/
  • localhost/sajatoldal/termekek/edessegek/bountycsoki/
  • localhost/sajatoldal/termekek/edessegek/sportszelet/
Ezek a barátságos webcímek. Nyilvánvaló azonban, hogy ez az utóbb vázolt forma nem azt jelenti, hogy minden egyes URL-ben szereplő kifejezéshez tartozik egy mappa a tárhelyen. Ez valóban nincs így. De akkor hogyan lehet megoldani, hogy a szerver ne mappákat keressen az URL-ek alapján, hanem paraméterként értelmezze mindazt, ami első ránézésre mappahivatkozásnak tűnik?
E célkitűzésünk tekintetében célirányos, és jól használható összefoglalót kínál a webmania.cc alábbi cikke is: Mindezek alapján megállapíthatjuk tehát, hogy a barátságos webcímek alkalmazásának alapfeltétele, hogy rendelkezzünk egy ehhez mefelelő .htaccess állománnyal. Az alábbi blokk erre mutat egy lehetséges példát:

  Options -Indexes
  Options +FollowSymLinks

  RewriteEngine on
  RewriteBase /

  RewriteRule ^(.*)/(.*)/(.*)/(.+)$  index.php?m1=404             [L,QSA]

  RewriteRule ^(.*)/(.*)/(.*)/$      index.php?m1=$1&m2=$2&m3=$3  [L,QSA]
  RewriteRule ^(.*)/(.*)/(.+)$       index.php?m1=$1&m2=$2&m3=$3  [L,QSA]

  RewriteRule ^(.*)/(.*)/$           index.php?m1=$1&m2=$2        [L,QSA]
  RewriteRule ^(.*)/(.+)$            index.php?m1=$1&m2=$2        [L,QSA]

  RewriteRule ^(.*)/$                index.php?m1=$1              [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$                 index.php?m1=$1              [L,QSA]


A konkrét példában megvalósított .htaccess fájl a következő tulajdonságokkal bír: Mindennek kipróbálásaként tekintsük meg az alábbi hivatkozások tartalmát:

Egy speciális eset

Előfordulhat, hogy az alapmappánkban léteznek valós almappák is. Ebben az esetben meg kell oldani, hogy a .htaccess fájl ne irányítson át paraméterként értelmezve az adott hivatkozást, hanem a tényleges mappatartalmat nyissa meg. Ilyenkor ekképpen kell kiegészítenünk a fenti .htaccess fájlt:

  Options -Indexes
  Options +FollowSymLinks

  RewriteEngine on
  RewriteBase /

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d  
  RewriteRule ^(.*)/(.*)/(.*)/(.+)$   index.php?m1=404             [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d  
  RewriteRule ^(.*)/(.*)/(.*)/$       index.php?m1=$1&m2=$2&m3=$3  [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d  
  RewriteRule ^(.*)/(.*)/(.+)$        index.php?m1=$1&m2=$2&m3=$3  [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d  
  RewriteRule ^(.*)/(.*)/$            index.php?m1=$1&m2=$2        [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d  
  RewriteRule ^(.*)/(.+)$             index.php?m1=$1&m2=$2        [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d  
  RewriteRule ^(.*)/$                 index.php?m1=$1              [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d  
  RewriteRule ^(.*)$                  index.php?m1=$1              [L,QSA]


Látható módon az újdonságot az alábbi két sor többszöri felhasználása jelenti:
		RewriteCond %{REQUEST_FILENAME} !-f
		RewriteCond %{REQUEST_FILENAME} !-d  
E két sor gondoskodik arról, hogy ha létezik a kért névnek megfelelő fájl (f), vagy mappa (d), akkor a soron következő átirányítás helyett ezt a valós fájlt, vagy mappát nyissuk meg. Ez a viselkedés érhető tetten az alábbi két hivatkozás-példa esetén:
előző oldal random oldal következő oldal


2022-06-26 01:22:46 Admin Köszönöm, ha Ön lesz az első, aki megírja ide véleményét, észrevételét, kérdését ezzel a lappal kapcsolatban.




Új hozzászólás:
E-mail cím:


Erre a címre küldjük ki a hozzászólás jóvá- hagyásához szükséges linket. Az e-mail címet sehol nem tesszük közzé.

Név:


Ez a név fog megjelenni az Ön hozzászólásai mellett.

Mennyi tizenhárom + nyolc?
Számjegyekkel írja be!



Ez a robotok beírása elleni védelem miatt szükséges ellenőrzés.


© infojegyzet.hu, 2022. február
Eszköztár