Fórum Root.cz
Hlavní témata => Server => Téma založeno: 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
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]
-
RewriteRule ^/?(prace[0-9])$ /$1/public [L,E=DONE:true]
Tak tohle nic neudělá, vidím stále strom adresářů
-
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.