Рейтинг:0

Возможны несколько подкаталогов Apache VirtualDocumentRoot

флаг za

У меня есть локальный сервер Apache для разработки страниц. Поэтому у меня есть корневая папка, в которой все разные страницы находятся в подпапках. Затем в этих папках есть другие подпапки для общедоступного контента. Это может быть - в зависимости от фреймворка - другая папка (например, общедоступная, wwwroot, webroot, httpdocs).

Структура папки:
/
|-- срв
    |-- http
        |-- страница
        | |-- корневой каталог
        | |-- .htaccess
        | |-- index.php
        |-- стр.2
            |-- публичный
                |-- index.php

Теперь вместо использования http://localhost/page/webroot я хочу использовать http://page.localhost/ Схема URL, потому что она должна быть такой же, как в реальном мире (например, ссылки, которые указывают на корень, должны работать и так далее).

Сначала я попробовал с Корень виртуального документа /srv/http/%-2/webroot/ который, кажется, работает довольно хорошо, если на всех страницах папка webroot является общей папкой. Однако это не работает, если общая папка имеет другое имя.

Итак, мой второй подход заключался в использовании mod_rewrite. с чем-то вроде:

Корень документа /srv/http
RewriteEngine включен

RewriteCond %{HTTP_HOST} (.+)\.[^\.]+$
RewriteCond %{DOCUMENT_ROOT}/%1/webroot -d
RewriteRule ^(.+) %{DOCUMENT_ROOT}/%1/webroot/$1 [L]

(Последние 3 строки можно повторить для других папок — здесь они пропущены для удобочитаемости)

Сначала это выглядело довольно многообещающе, но потом я обнаружил, что это не работает, если на странице есть файл .htaccess с локальным mod_rewrite, который сопоставляет все запросы с index.php (как это делают некоторые фреймворки). В этом случае mod_rewrite запустит бесконечный цикл, так как динамическая часть пути обрабатывается как подпапка, а не как DocumentRoot. Вот вывод из журнала: https://pastebin.com/4aNgRahx

Это повторяется до тех пор, пока не будет достигнут предел рекурсии.

Файл .htaccess выглядит так:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^ index.php [L]
</IfModule>

Если я отключу его, он будет работать.

Так что мне теперь делать?

Изменение .htaccess или любых файлов в папке проекта не вариант, потому что тогда он больше не будет работать на реальном сервере.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.