Fórum Root.cz

Hlavní témata => Server => Téma založeno: PP 09. 12. 2014, 13:07:45

Název: Pravidlo v souboru .htaccess
Přispěvatel: PP 09. 12. 2014, 13:07:45
Ahoj. pokouším se napsat pravidlo do souboru .htaccess, které by mi načítalo soubory z jiné složky. Mám to rozděleno takto
Kód: [Vybrat]
http://localhost/prace1/public
http://localhost/prace2/public
http://localhost/prace3/public

a chci aby se to nemuselo zadávat s adresářem "public" ale jen

Kód: [Vybrat]
http://localhost/prace1
http://localhost/prace2
http://localhost/prace3

a data se načítala z adresáře "public". Pomůže někdo? Děkuji
Název: Re:Pravidlo v souboru .htaccess
Přispěvatel: PP 09. 12. 2014, 13:08:42
Ještě doplním, že se jedná o Apache2.4
Název: Re:Pravidlo v souboru .htaccess
Přispěvatel: tst 09. 12. 2014, 14:51:20
RewriteRule ^/?(prace[0-9])$ /$1/public [L,E=DONE:true]
Název: Re:Pravidlo v souboru .htaccess
Přispěvatel: Ondřej Vaniš 09. 12. 2014, 14:55:42
Nezkoušel jsem ale jako nápověda vy mohlo postačit.

Kód: [Vybrat]
RewriteEngine on

RewriteCond %{REQUEST_URI} !^/prace1/
RewriteRule ^prace1/(.*) /prace1/public/$1 [L]

RewriteCond %{REQUEST_URI} !^/prace2/
RewriteRule ^prace2/(.*) /prace2/public/$1 [L]

RewriteCond %{REQUEST_URI} !^/prace2/
RewriteRule ^prace2/(.*) /prace2/public/$1 [L]
Název: Re:Pravidlo v souboru .htaccess
Přispěvatel: PP 09. 12. 2014, 15:25:38
RewriteRule ^/?(prace[0-9])$ /$1/public [L,E=DONE:true]
Tak tohle nic neudělá, vidím stále strom adresářů
Název: Re:Pravidlo v souboru .htaccess
Přispěvatel: PP 09. 12. 2014, 15:27:12

Kód: [Vybrat]
RewriteEngine on

RewriteCond %{REQUEST_URI} !^/prace1/
RewriteRule ^prace1/(.*) /prace1/public/$1 [L]

A tohle je to stejný :-(
Název: Re:Pravidlo v souboru .htaccess
Přispěvatel: Ondřej Vaniš 09. 12. 2014, 15:43:10
Tak mi to nedalo a vyzkoušel jsem to a upravil.
Kód: [Vybrat]
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(prace[0-9])/public/
RewriteRule ^(prace[0-9])/(.*)$ /$1/public/$2 [L]
Toto funguje.

Do browseru zadám http://localhost/prace1/test.html a apache mi předá soubor test.html z adresáře /prace1/public/
Název: Re:Pravidlo v souboru .htaccess
Přispěvatel: Ondřej Vaniš 09. 12. 2014, 15:55:10
Tak ještě jedna optimalizovaná verze.
Kód: [Vybrat]
RewriteEngine on
RewriteRule ^(prace[0-9])/(?!public/)(.*)$ /$1/public/$2 [L]
Název: Re:Pravidlo v souboru .htaccess
Přispěvatel: PP 09. 12. 2014, 16:34:17
Tak proč mě to nejde a tobě to jde? v adresáři prace1 mám .htaccess a v něm pouze
Kód: [Vybrat]
RewriteEngine on
RewriteRule ^(prace[0-9])/(?!public/)(.*)$ /$1/public/$2 [L]

zadám
Kód: [Vybrat]
http://localhost/prace1/index.php a vidím obsah souboru prace1/index.php, ne obsah souboru prace1/public/index.php

Dík
Název: Re:Pravidlo v souboru .htaccess
Přispěvatel: Ondřej Vaniš 09. 12. 2014, 16:51:08
Já mám umístěn .htaccess na úrovni adresářů prace1,prace2,prace3 a ne v nich.
Tak to by mohlo vadit.
Další věc co by mohlo být špatně je že nemáš povolený pro apache mod_rewrite.
Zkus si vylistovat aktuálně nahrané moduly. Melo by to jít tímto příkazem "apache2 -M"
Název: Re:Pravidlo v souboru .htaccess
Přispěvatel: PP 09. 12. 2014, 17:10:48
Povoléné to mám, ostatní pravidla normálně fungují, akorát jsem teď zjistil, že pokud smažu soubor .htaccess, tak se to v prohlížeči stále aplikuje, nechápu, je potřeba něco někde vyčistit ? Zlatý Linux, tam nejsou žádné problémy...
Název: Re:Pravidlo v souboru .htaccess
Přispěvatel: Ondřej Vaniš 10. 12. 2014, 11:11:17
Vysypat chache v prohlížeči.
Úpravy .htaccess se projeví ihned.
Název: Re:Pravidlo v souboru .htaccess
Přispěvatel: PP 16. 12. 2014, 12:50:11
Vymazání cache nepomohlo, reinstall Windows ano. Díky za pomoc.
Název: Re:Pravidlo v souboru .htaccess
Přispěvatel: to_je_jedno 16. 12. 2014, 13:02:42
Nepremyslel jsi o virtualhostech? jakoze prace1.local , prace2.local a tak?
Mnohe by ti to zjednodusilo.