/ / Apache alias / prepísať do podadresára bez presmerovania - apache, .htaccess, mod-rewrite, apache2.2, mod-alias

Apache alias / prepísať do podadresára bez presmerovania - apache, .htaccess, mod-rewrite, apache2.2, mod-alias

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...

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ď č. 1

Môž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 fooa bar):

RewriteEngine on
RewriteCond $2 !^dev/ [NC]
RewriteRule ^([^/]+)/(.*)$ $1/dev/$2 [L]