Autor Zpráva
Sobky
Profil
Dobrý večer!
Prosím vás ako sa robí na stránkach to, že keď kliknem na napr. kontakt tak mi to napíše url ...../kontakt a nie ..../kontakt.php alebo .html???
mimochodec
Profil
Jde o přesměrování. Asi nejpoužívanější postup je pomocí htaccess. Viz Soubor .htaccess
Příklad zápisu, který zařídí, že když otevřeš www.web.cz/aktuality, ve skutečnosti se zobrazí index.php?pg=aktuality:
# presmerovani
RewriteEngine on
RewriteRule ^aktuality$ %{DOCUMENT_ROOT}/index.php?pg=aktuality [L,QSA]

Umí to ale i mnohem sofistikovanější logiku.
A není to jediný způsob, jak to řešit. Můžeš načíst celou adresu a pak ji zpracovat komplet ve své režii. Postup by mohl být třeba tady: http://stackoverflow.com/questions/6768793/get-the-full-url-in-php Ale podotýkám, že i když mě to řešení docela láká, zatím jsem ho netestoval, tak snad neodkazuju na nesmysl.
Kubo2
Profil
mimochodec:
Postup by mohl být třeba tady: http://stackoverflow.com/questions/6768793/get-the-full-url-in-php
Stručne som to preletel a niektoré popisované metódy/spôsoby sú naozaj zaujímavé. Niekoľkokrát tam tiež padla otázka, prečo by malo byť niečo také potrebné zisťovať z PHP aplikácie. Ja si myslím, že sa to dá použiť pre najjednoduchšie routovanie a parsovanie URL adresy:

.htaccess
Options -Indexes -FollowSymLinks
RewriteEngine On
## naroutujeme všetky neexistujúce súbory na index.php
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? index.php [L]

index.php
<?php

// vyparsujeme si URL adresu
$fullURL = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$parsedURL = parse_url($fullURL);

// ...
// vlastná logika
Fisir
Profil
Reaguji na Kuba2:
najjednoduchšie
Proč to dělat jednoduše, když to jde i složitě, což?
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]
$URL = $_GET['p'];
Kubo2
Profil
Fisir:
Osobne mi to príde prirodzenejšie v prípade „pekných URL adries“ parsovať natívne implementované $_SERVER['REQUEST_URI'], ako sa spoliehať na nejaký fixný GET parameter, ale je to viac-menej vec názoru.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: