.htacces, mod_rewrite a zapeklity problem
- KingKoca
- Člen | 25
Ahoj vsem, mam zapeklity problem.
Protoze se aplikace testuji, vetsinou na nejakem serveru testovacim v podadresari, je nastavena base_url. A protoze ve spouste pripadu neni umoznen pristup do nadrazeneho adresare tak, aby byl splnen skeleton nette s document_root, musi byt adresar app prave v onom document_root spolecne s ostatnimi soubory. Zde ale nastava problem v tom, ze potom v mod_rewrite nemohu dat prednost podmince na filesystem a musim si sam rict, ktere adresare chci „zverejnit“.
jedna cesta je ochrana pres .htaccess soubory (deny from all) v adresarich, ktere zverejnit nechci, ale pak nastava dalsi problem. Nechci zverejnit adresar app, ale chci, abych mel controller s nazvem app (chci mit app v URI). A nechci aby se mi zobrazil error 403 forbidden. Cili tudy cesta nevede.
Reseni je napr. takoveto: http://pastebin.com/Z88RM8CD
V uvedenem prikladu je videt, ze chci zverejnit jen adresare „css“ a
„js“ v korenovem (document_root) adresari. Proto tam je na zacatku podminky
zobacek. Problem je, ze kdyz mam cely dokument v podadresari a cela cesta je:
http://muj.test/<RewriteBase>/app/ tak aby tento
priklad spravne fungoval, musi se uvadet prave RewriteBase.
No abych se dostal k tomu, co potrebuju, tak to je takove reseni, kde neni podminka na filesystem (takove ty RewriteCond %{REQUEST_FILENAME} !-f ) a zaroven se nemusi pouzivat RewriteBase. Abych nemusel pokazde upravovat .htaccess soubor, kdyz presouvam web do jineho podadresare nebo na ostry server, kde podadresar neni. Nejlepsi, ukazte se :)
- arron
- Člen | 464
Skeleton nette ale prece muze byt splneny:-) Ne teda uplne (document_root bude porad tom hlavni adresari), ale jinak se tam klidne necha nahrat skeleton struktura a staci jenom presunout index.php a prislusny .htaccess a v indexu zmenit cesty :-) Tim si myslim, ze se problem stane snaze resitelny :-)
- jtousek
- Člen | 951
Pokud jsem problém správně pochopil tak první problém o zabezpečení složky app, která musí být v document_root, ideálně přes .htaccess pomocí deny from all. Nedávno jsem to potřeboval, vyřešil jsem to přejmenováním na .app, potom už deny nevadí ptz taková url potřeba není.
Druhý problém s RewriteBase. Osobně se mi podobné čachry s tím že aplikace není v rootu domény ale v nějaké podsložce vůbec nelíbí. Nějaké použitelné transparentní řešení snad ani neexistuje. K čemu to vlastně potřebuješ? Řešení pomocí automatických subdomén mi přijde mnohem jednodušší a lepší.
- KingKoca
- Člen | 25
pravda, automaticke subdomeny ano, ale ja bych radeji nejake reseni pro podadresare. Samozrejme, ze na ostrych provozech toto nebyva, ale na testovacich casto ano.
Jinak reseni v podobe prejmenovani slozky na .app je velice mazane :)
Diky za prispevky, myslel jsem si, ze to nepujde.