2015-10-15 8 views
0

В качестве примера я обращаюсь к проекту foo по адресу https://localhost/projects/foo/dev/.Apache alias/rewrite в подкаталог без перенаправления

Я хотел бы переписать URL, так что https://localhost/projects/foo/ указывает на projects/foo/dev/ в моей папке DocumentRoot

Это должно не быть HTTP 3xx Перенаправление. Кроме того, dev1, dev2 и т. Д. Не должны быть доступны (если нет каталогов внутри dev с этими именами, но это маловероятно). Конечно, остальная часть пути, а также строки запроса и фрагментов необходимо сохранить, например:

projects/foo/dev/assets/js/jquery.min.js -> https://localhost/projects/foo/assets/js/jquery.min.js 

Это моя структура каталогов в моей папке DocumentRoot:

  • проекты/
    • Foo/
      • DEV/
      • dev1/
      • DEV2/
      • dev3/
    • бар/
      • DEV/
      • dev1/
      • DEV2/
    • и так далее ...

Я пробовал ответ, размещенный в this question, но он не вступает в силу даже после перезапуска Apache.

Я также попытался это, который кажется правильным, но дает мне HTTP 500 с некоторой бесконечной перенаправляет ошибки в error.log:

RewriteEngine on 
RewriteRule ^(.*)$ src/$1 [L,QSA] 

Я только иметь доступ внутри каждой директории проекта (например, foo и bar) и родительский каталог не может называться projects на других машинах. Поэтому это нужно делать в файлах htaccess, а не httpd.conf.

ответ

0

Вы можете использовать в projects/.htaccess:

RewriteEngine on 
RewriteCond $2 !^dev/ [NC] 
RewriteRule ^(foo|bar)/(.*)$ $1/dev/$2 [NC,L] 

Или для каждого каталога в projects/ (не только foo и bar):

RewriteEngine on 
RewriteCond $2 !^dev/ [NC] 
RewriteRule ^([^/]+)/(.*)$ $1/dev/$2 [L] 
Смежные вопросы