.php kiterjesztés elrejtése a fájlnévben

  • apache tippek

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.

5 hozzászólás

Üdvözlöm !

Üdvözlöm !
Kis segítséget szeretnék kérni... ha lehet, nem programozó vagyok és az alábbi feladatot szeretném megoldani:
google docsban készített kérdőíveket /tanulói tesztek/ kell kiküldeni. A kiküldött linknek ideiglenesnek kellene lenni, pld. 1 nap múlva törlődjön, másrészt az eredeti link ne látszódjon /ne lehessen visszakövetni/.

kaptam egy ilyen megoldást, de nem tudom hogyan s mit...
gy PHP vagy PERL futtatást is biztosító ingyenes tárhelyen létre hozol egy fiókot index fájlal és azzal

olvastatod be vagy tölteted le a kérdőívet. (Vigyázat az ingyenes tárhelyeken kisebb-nagyobb mértékben limitálva vannak a PERL és PHP funkciók.) H elmúlt az érvényességi idő, akkor azt csinálsz amit akarsz -> kiirathatod, hogy az érvényesség lejárt stb.

konkrét lépések kellenének:)
előre is köszönöm...

Tisztelt Karvalics Antal!

Tisztelt Karvalics Antal!

Láttam a hozzászólását.
Én is egy közel azonos google docs problémával küzdök, azt szeretném Öntől megkérdezni, hogy talált e erre megoldást.
Előre is köszönöm!

Morovics József

Tisztelt József!

Tisztelt József!

Ha automatikusan szeretné a dokumentumok hozzáférhetőségének idejét szabályozni, akkor azt php -ban egyszerű megoldani, de ehhez alapvető html és php programozási ismeretek kellenek, anélkül nem fog menni.
Az iskola informatikusának ez nem szabad, hogy probléma legyen.

Viszont ennek nincs köze a fentebb olvasható cikkhez, ehhez nem kell url rewriting