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
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
http://localhost/prace1
http://localhost/prace2
http://localhost/prace3
a data se načítala z adresáře "public". Pomůže někdo? Děkuji
Ještě doplním, že se jedná o Apache2.4
RewriteRule ^/?(prace[0-9])$ /$1/public [L,E=DONE:true]
Nezkoušel jsem ale jako nápověda vy mohlo postačit.
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]
Citace od: tst kdy 09. 12. 2014, 14:51:20
RewriteRule ^/?(prace[0-9])$ /$1/public [L,E=DONE:true]
Tak tohle nic neudělá, vidím stále strom adresářů
Citace od: Ondřej Vaniš kdy 09. 12. 2014, 14:55:42
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/prace1/
RewriteRule ^prace1/(.*) /prace1/public/$1 [L]
A tohle je to stejný :-(
Tak mi to nedalo a vyzkoušel jsem to a upravil.
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/
Tak ještě jedna optimalizovaná verze.
RewriteEngine on
RewriteRule ^(prace[0-9])/(?!public/)(.*)$ /$1/public/$2 [L]
Tak proč mě to nejde a tobě to jde? v adresáři prace1 mám .htaccess a v něm pouze
RewriteEngine on
RewriteRule ^(prace[0-9])/(?!public/)(.*)$ /$1/public/$2 [L]
zadám http://localhost/prace1/index.php a vidím obsah souboru prace1/index.php, ne obsah souboru prace1/public/index.php
Dík
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"
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...
Vysypat chache v prohlížeči.
Úpravy .htaccess se projeví ihned.
Vymazání cache nepomohlo, reinstall Windows ano. Díky za pomoc.
Nepremyslel jsi o virtualhostech? jakoze prace1.local , prace2.local a tak?
Mnohe by ti to zjednodusilo.