Napríklad, pristupujem k projektu foo
na https://localhost/projects/foo/dev/
.
Rád by som prepísal URL tak, aby to https://localhost/projects/foo/
ukazuje na projects/foo/dev/
v priečinku DocumentRoot
Toto by malo nie byť presmerovanie HTTP 3xx. okrem toho dev1
, dev2
, atď. by nemali byť prístupné (pokiaľ nie sú vnútri priečinky dev
s týmito názvami, ale to je nepravdepodobné) Samozrejme, zvyšok cesty, ako aj dopytové reťazce a fragmenty je potrebné zachovať, napríklad:
projects/foo/dev/assets/js/jquery.min.js -> https://localhost/projects/foo/assets/js/jquery.min.js
Toto je moja štruktúra priečinkov v priečinku DocumentRoot:
- projekty /
- foo /
- dev /
- dev1 /
- dev2 /
- dev3 /
- bar /
- dev /
- dev1 /
- dev2 /
- a tak ďalej...
- foo /
Snažil som sa odpoveď uverejniť táto otázka ale nenastane ani po reštartovaní Apache.
Aj ja som sa snažil to, čo sa zdá správne, ale dáva mi HTTP 500 s nekonečnou chybou presmerovania error.log
:
RewriteEngine on
RewriteRule ^(.*)$ src/$1 [L,QSA]
Mám prístup iba v rámci každého adresára projektu (napr. foo
a bar
) a nadradený adresár nemôže byť volaný projects
na iných strojoch. Preto je potrebné to urobiť v rámci súborov htaccess a nie httpd.conf.
odpovede:
0 pre odpoveď č. 1Môžete použiť vo svojom projects/.htaccess
:
RewriteEngine on
RewriteCond $2 !^dev/ [NC]
RewriteRule ^(foo|bar)/(.*)$ $1/dev/$2 [NC,L]
Alebo pre každý adresár v projects/
(nie len foo
a bar
):
RewriteEngine on
RewriteCond $2 !^dev/ [NC]
RewriteRule ^([^/]+)/(.*)$ $1/dev/$2 [L]