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: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: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/?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
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?
- localhost/sajatoldal/aktualitasok/
- localhost/sajatoldal/elerhetoseg/
- localhost/sajatoldal/termekek/kekszek/
- localhost/sajatoldal/termekek/edessegek/bountycsoki/
- localhost/sajatoldal/termekek/edessegek/sportszelet/
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]
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]
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-dE 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 |