Autor Zpráva
peteo
Profil
dobrý deň, večer, ráno,

potreboval by som poradiť, ako podstrčiť súborom bez prípony súbor s príponou, napr:

RewriteRule ^bbb bbb.php
RewriteRule ^ccc ccc.php
...

ale tak, aby podstrčenie neprebehlo u adresára bbb, ccc ani u súborou s akoukoľvek príponou (bbb.*, ccc.*, ...), proste iba u súborov bez prípony.

ďakujem za pomoc,

p.
Corwin
Profil
ahoj, je to poměrně jednoduché :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1.php [L]

právě 2 řádky s rewriteCond vyjmou z pravidla existující adresáře či existující soubory.

PS.: toto "proste iba u súborov bez prípony." moc nechápu... prostě máš soubory s příponou PHP a ty zobrazíš na url /neco/ - bez přípony.
peteo
Profil
Corwin:

môžete mi, prosím, ešte vysvetliť význam prepínačov !-f a !-d v RewriteCond, aby som rozumel tomu, čo vlastne robím?
ďakujem za ochotu.

p.
Corwin
Profil
už jsem vysvětlil v minulém příspěvku, ale ještě to rozepíšu víc :

!-f = na požadované url není soubor (not file)
!-d = na požadované url není adresář (not directory)

tedy : při zavolání url : http://www.neco.cz/stranka/
zobrazí se namísto toho soubor http://www.neco.cz/stranka.php
ale pouze za předpokladu, že v rootu neexistuje složka /stanka/ či soubor bez přípony /stranka
peteo
Profil
Corwin:

no a to je práve problém, ja potrebujem, aby práve existujúci súbor bez prípony (doména/aaa) bol nahradený súborom s príponou (doména/aaa.php):

RewriteRule ^bbb bbb.php
RewriteRule ^ccc ccc.php
...

takže teoreticky by stačilo vynechať RewriteCond %{REQUEST_FILENAME} !-f - ale: nebude to presmerovávať i súbory s príponou (bbb.txt, ccc.txt, ...)?

p.

hm, tak to nefunguje (vypustenie RewriteCond %{REQUEST_FILENAME} !-f).
Corwin
Profil
peteo:
takže teoreticky by stačilo vynechať RewriteCond %{REQUEST_FILENAME} !-f - ale: nebude to presmerovávať i súbory s príponou (bbb.txt, ccc.txt, ...)?

nikoli, bude to fungovat pouze u souborů s příponou php, jak je deklarováno v rewriteRule. co přesně dělá tento řádek se poněkud krkolomně vysvětluje, raději ukážu na screenshotu :

http://sklad.treba.cz/bez_pripony.jpg

toto je soubor bez přípony. cokoli.txt / cokoli.html / cokoli.css jsou příklady, na které se to nevztahuje.
Kajman
Profil
peteo:
Omezte přepsání na taková url, kde se nevyskytuje tečka - tedy není přípona...
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)$ $1.php [L]
peteo
Profil
Kajman:

jo, to je ono.

ďakujem.
prajem pekný deň.

p.
Keeehi
Profil
peteo:
Mě by zajímalo, proč ty soubory nemají připonu? Postup je většinou obrácený (soubory příponu mají a v url se jí chceme zbavit). Je nějaký důvod, proč nemůžete těm souborům přidat příponu a úplně vynechat to přepisování?

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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