Pravidlo v souboru .htaccess

PP

Pravidlo v souboru .htaccess
« kdy: 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


PP

Re:Pravidlo v souboru .htaccess
« Odpověď #1 kdy: 09. 12. 2014, 13:08:42 »
Ještě doplním, že se jedná o Apache2.4

tst

Re:Pravidlo v souboru .htaccess
« Odpověď #2 kdy: 09. 12. 2014, 14:51:20 »
RewriteRule ^/?(prace[0-9])$ /$1/public [L,E=DONE:true]

Re:Pravidlo v souboru .htaccess
« Odpověď #3 kdy: 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]

PP

Re:Pravidlo v souboru .htaccess
« Odpověď #4 kdy: 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ářů


PP

Re:Pravidlo v souboru .htaccess
« Odpověď #5 kdy: 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ý :-(

Re:Pravidlo v souboru .htaccess
« Odpověď #6 kdy: 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/

Re:Pravidlo v souboru .htaccess
« Odpověď #7 kdy: 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]

PP

Re:Pravidlo v souboru .htaccess
« Odpověď #8 kdy: 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

Re:Pravidlo v souboru .htaccess
« Odpověď #9 kdy: 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"

PP

Re:Pravidlo v souboru .htaccess
« Odpověď #10 kdy: 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...

Re:Pravidlo v souboru .htaccess
« Odpověď #11 kdy: 10. 12. 2014, 11:11:17 »
Vysypat chache v prohlížeči.
Úpravy .htaccess se projeví ihned.

PP

Re:Pravidlo v souboru .htaccess
« Odpověď #12 kdy: 16. 12. 2014, 12:50:11 »
Vymazání cache nepomohlo, reinstall Windows ano. Díky za pomoc.

Re:Pravidlo v souboru .htaccess
« Odpověď #13 kdy: 16. 12. 2014, 13:02:42 »
Nepremyslel jsi o virtualhostech? jakoze prace1.local , prace2.local a tak?
Mnohe by ti to zjednodusilo.
Děkuji za možnost editace příspěvku.