Мой ответ, если этот Apache не позволяет вам делать то, что вы пытаетесь сделать здесь, но это потому, что AFAIK вам не нужно делать это, чтобы делать то, что вам действительно нужно.
Создается впечатление, что вы пытаетесь создать локальную среду, которая в терминах конфигурации отражает вашу (удаленную) серверную тестовую среду. Однако вы путаете пространство имен URI и пространство имен файловой системы, и в Apache Server они совершенно разные. Например, директива <Location>
работает с первым, а директива <Directory>
- с последним. .htaccess
что-то вроде того, что нужно, чтобы понять, когда параметр работает с одним или другим.
Например, у меня есть общая учетная запись службы, которая обслуживает несколько поддоменов *.ellisons.org.uk
- например, мой блог на http://blog.ellisons.org.uk/. Я разрабатываю на ноутбуке Ubuntu и виртуальной машине, которая отражает LAMP / suPHP Конфигурация, в которой работает мой поставщик услуг (но у меня есть root-доступ и я вижу журналы перезаписи и т. д. на виртуальной машине). Я статически выделяю IP-адреса в своем 192.168.1.0/24
частном адресном пространстве и у меня /etc/hosts
синонимы для
127.0.1.1 ... blog.ellisons.org.home forum.ellisons.org.home ...
192.168.1.250 ... blog.ellisons.org.vm ...
Но кроме этого пространство URI идентично, поэтому blog.ellisons.org.XX/themes/terry/all.css
загружает мой css с моего сервера, ноутбука или виртуальной машины в зависимости от того, XX = uk, home, vm
Тем не менее, документация на моем ноутбуке соответствует стандарту Debian /var/www
, а на двух других - /websites/LinuxPackage02/el/li/so/ellisons.org.uk/public_html
(соглашение об именовании моих хостеров). Тем не менее мое приложение, включающее .htaccess
файлы, идентично, и единственный способ, которым они отражают это многократное использование, заключается в регулярных выражениях, где я использую в качестве регулярного выражения совпадение% {HTTP_HOST} (\w+)\.ellisons.\org\.(?:uk|home|vm)
.
Итак, к вашему примеру:
- Ничто не мешает вам направлять запросы на
/app
в физический каталог /codeigniter-app
на локальном ПК. Вы можете использовать директиву Alias
на вашем сервере или конфигурацию vhost для этого ..
RewriteBase
принимает аргумент пути URI, поэтому /app
будет работать в обоих случаях.
- В общем, Apache понимает разницу между доменами URI и FS и не смущается - даже ваши разработчики регулярно это делают :-) В тех редких случаях, когда вам нужно явно ссылаться на имя FS, скажем, в
RewriteCond
string, вы можете использовать %{DOCUMENT_ROOT}
- хотя, если ваш сервис является общим сервисом, вам, возможно, придется использовать переменную окружения (у меня это %{ENV:DOCUMENT_ROOT_REAL}
). Я phpinfo () скажу вам, что.
- Убедитесь, что вы используете относительные адреса в любых
RewriteRule
заменах (без начальных косых черт).
Итак, подведя итог, немного подумав, вы можете сделать свои конфигурации логически идентичными, как предлагает Apache - разве это не лучше, чем попытка выполнить условное выполнение способом, который никогда не был встроен в продукт?