Autor | Zpráva | ||
---|---|---|---|
dbe_trainee Profil * |
#1 · Zasláno: 7. 5. 2015, 12:11:52
Ahojte. Začal jsem se učit dělat webové aplikace. Používám FileZillu a rovnou si všechny soubory odesílám na testovací server. Struktura důležitých adresářů a souborů vypadá nějak takto:
.htaccess app public -> index.php Rád bych, aby se každý návštěvník dostal automaticky do složky public, resp. k souboru index.php v této složce, aniž by było "public" zobrazeno v URL. Dá se to nějak udělat přes soubor .htaccess? Zkoušel jsem některá řešení ze StackOverflow a i tady jsem něco našel. Taky jsem to testoval na localhostu, ale bohužel jako by .htaccess neexistoval, objevil se jen index adresáře (výpis souborů a podadresářů), které spadají pod root. Děkuji za každý podnět! |
||
dbe_trainee Profil * |
#2 · Zasláno: 7. 5. 2015, 21:00:04
Prosím, někdo dejte vědět, urcitě je to pro některé z vás bězná věc, vůbec tomu nerozumím. Děkuji
|
||
Marschmallow Profil |
#3 · Zasláno: 7. 5. 2015, 21:02:27
dbe_trainee:
Pokud budeš na webhosting přistupovat před doménu ahoj.cz, tak by mělo fungovat toto: RewriteCond %{HTTP_HOST} ^ahoj.cz$ RewriteCond %{REQUEST_URI} !^/public/ RewriteRule (.*) /public/$1 [L] |
||
dbe_trainee Profil * |
#4 · Zasláno: 7. 5. 2015, 21:34:21
Ahoj Marschmallow,
mockrát děkuji, funguje přesně, jak jsem potřeboval a očekával, super. Mimochodem, je to bezpečné, pokud budu mít ve složce app další .htaccess : Options -Indexes |
||
Marschmallow Profil |
dbe_trainee:
Radši tam dej deny from all |
||
dbe_trainee Profil * |
#6 · Zasláno: 7. 5. 2015, 21:58:25
Marschmallow:
Jde o PHP aplikaci založené na MVC a mým cílem je, jak už názvy složek napovídají, aby se uživatel dostal jen k public/index.php, kde je vyžádání (require) souborů ze složky app a inicializace třídy. Doufám, že nedělám nějakou začátečnickou chybu... Tak jako tak, ještě jednou moc díky, opravdu jsi mi pomohl a teď tomu s .htaccess už rozumím. |
||
Marschmallow Profil |
dbe_trainee:
Teď ještě jednou koukám na tu Tvojí adresářovou strukturu a pokud je .htaccess nastaven správně (viz. [#3]), tak se uživatel nemůže dostat do složky app, protože je o úroveň výš (respektive ve stejné úrovni) jako public, ale v jiné složce. Máš to správně. |
||
dbe_trainee Profil * |
#8 · Zasláno: 8. 5. 2015, 00:00:40
Marschmallow:
Perfektní! No, to jsem si právě nebyl jistý, že nemůže, že není nějaký způsob, jak se to dá obejít. Tak jsem rád, že mám (zatím) čistý štít.. |
||
Keeehi Profil |
#9 · Zasláno: 8. 5. 2015, 05:56:49
Ale dá se tam dostat. Ten rewrite dělá jen to, že vytváří nové URL, na kterých je nově nějaký obsah dostupný. Ale na tech starých URL ten obsah pořád zůstává. Sice to v to na stránkách nikde používat nebudeš, ale pokud někdo tu adresu uhodne, tak si to může zobrazit.
Tudíž pokud to neošetřš, budou přístupné tyto adresy: example.com/public/index.php example.com/app/secret-file A tu druhou vyřešíš přidáním právě dalšího htaccess do složky app s výše zmiňovaným deny from all. Pro Apache 2.4 se používá něco jiného. Tak pokud je to tvá verze tak si to vyhledej nebo se tu doptej. |
||
dbe_trainee Profil * |
#10 · Zasláno: 8. 5. 2015, 10:29:27
Keeehi:
Ahoj, díky za upozornění. Řešit to budu v .htaccess pro adresář public, je to tak? (example.com/public/index.php) Na lokálním serveru používám Apache 2.4.10, na testovacím hostingu se mně nepodařilo zjistit, jaká verze Apache je tam nainstalovaná. Není to uvedené ani v phpinfo() ani v apache_get_version(). Pokud jsem četl dobře, nejspíš je to kvůli nastavení v httpd.conf, ke kterému nemám přístup. Nicméně na obou serverech deny from all vyhazuje 403, jak se očekává. Má nějaký důvod, proč používat něco jiného? |
||
Časová prodleva: 9 let
|
0