Autor Zpráva
Mihhc
Profil
Zdravím všechny,

prosil bych Vás zkušenější o příklady, jak se v praxi řeší, tedy Vy jak následující řešíte.

Udělal jsem si hezkou URL následujícím zápisem:
# EXAMPLE.COM/INDEX.PHP?PAGE=NECO> EXAMPLE.COM/NECO (/)
# RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?page=$1 [L]

# EXAMPLE.COM/INDEX.PHP?PAGE=GALERIE&PAGE2=COSI> EXAMPLE.COM/GALERIE/COSI (/)
# RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)?/?$ ?page=$1&topic=$2 [L]

1)
Ovšem má to za následek, že fungují:
www.example.com/?page=nazev (místo page at napíšu cokoliv též funguje)
www.example.com/index.php?page=nazev (totéž)
www.example.com/nazev
www.example.com/nazev/

Nejradši bych zápis: www.example.com/nazev

A co jsem koukal, tak téměř nikde nejde zadat více než jeden zápis. Lomítko obvykle přesměruje bez lomítka, či naopak.(jak?) A první dva zápisy obvykle vůbec nefungují. (jak?)

2)
Chtěl bych, aby pak již nešlo nic zadat.
Takto mi funguje.
www.example.com/strana1 (existuje, zobrazí se)
www.example.com/strana1/neco (neco neexistuje, zobrazí se strana1, chci 404)
www.example.com/strana1/neco/neco2 (správně 404)

To pokud se nemylím, dalo by se vyřešit tímto:
# 2 pametry jsou u galerie a uvod, jinde jen 1 parametr, jinak 404
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([galerie^/]+)/([^/]+)?/?$ ?page=$1&topic=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([uvod^/]+)/([^/]+)?/?$ ?page=$1&topic=$2 [L]

Toto jsem trochu zkoušel, zatím fungovalo (zkoušel jsem pouze "galerii" a fungovalo, nevím jestli to bude fungovat oboje zaroveň).
www.example.com/galerie/neco (existuje, zobrazí se)
www.example.com/galerie/neco/neco2 (správně 404)
, ovšem když se odkáže na kotvu #kotva, tak pak mohu další parametry zadávat třeba do trantárie:
www.example.com/galerie/neco#kotva/neco2/neco3/neco4 (zobrazí se galerie/neco#kotva, ale má být 404)

3)
Chtěl bych se zeptat, zda-li se výše uvedené problémy také nepovažují za duplicitu? (Nějaký vliv od vyhledavačů, atp.)

Závěrem bych prosil potvrzení / vyvrácení mých amatérských zápisů. A rady ohledně uvedených problémů.

Doufám, že jsem příliš neotěžoval,

předem děkuju,

M.
Kajman
Profil
Vyjmenovávání povolených kombinací je možné zapisovat i přímo do pravidel, ale běžnější řešení spočívá v nějakém obecném univerzálním pravidle, které požadavky na (neexistují) soubory předá jednomu skriptu, který je spravuje (často se nazývá router - můžete např. kouknout na jeden od Tori ).

Ten zhodnotí, zda taková url existuje, komu ji má předat na zpracování. Případně adresu opraví (např. přesměrování ze staré verze url této stránky, ošetření koncového lomítka), nabídne blízká url, která možná chtěl uživatel zadat, či zobrazí chybovou stránku.

Jinak část adresy za # na server nechodí. Ty si případně ošetřujte javasriptem, pokud na tom trváte.
Mihhc
Profil
Omluva za mlčení.
Ale už to velmi spěchalo.

Použité řešení zde (kdyby někdo potřeboval, neumím posoudit zda-li je lepší / horší):

http://stackoverflow.com/questions/12538466/htaccess-friendly-url
Kajman
Profil
Stále si ale musíte v php ošetřit existenci adres a případně vracet kód 404. Na to je .htaccess krátký.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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