Использовать альтернативу файлу .htaccess, если он существует? - PullRequest
0 голосов
/ 17 февраля 2019

Справочная информация: Я использовал переменную окружения, чтобы позволить мне различать моего разработчика и производственный сервер, используя это в .htaccess: -

<IfDefine DEV_SERVER>
  # dev server specific stuff here
</IfDefine> 

<IfDefine !DEV_SERVER>
  # production server specific stuff here
</IfDefine>

Переменная окружения "DEV_SERVER" была установлена ​​только когда-либона моем сервере разработки, и никогда на производстве, очевидно.

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

Я пробовал использовать разные версии файлов .htaccess для разработки и производства, но это грязно и опасно, мне нравится иметь возможность обмениваться всеми файлами в любое времямежду двумя.

Мой сервер разработки работает на Apache 2.4, и я не планирую это менять.Я прочитал, что вы можете указать другое имя файла для .htaccess, поместив его в httpd.conf: -

AccessFileName .htaccess.dev

Это уже наполовину - теперь у меня может быть файл .htaccess.dev, который есть только у моего разработчикасервер будет использовать вместо .htaccess.Но в идеале я хотел бы, чтобы сервер dev: -

  1. использовал .htaccess, если это все, что есть
  2. , использовал .htaccess.dev, если это все, что есть
  3. используйте .htaccess.dev, если присутствуют и .htaccess, и .htaccess.dev

Имеет (2) и (3), но, к сожалению, нет (1).

Естьесть ли решение?Любая помощь с благодарностью, как всегда!

1 Ответ

0 голосов
/ 13 марта 2019

Вы можете указать несколько файлов в AccessFileName, так что вы можете сделать: AccessFileName .htaccess.dev .htaccess

Что это сделает, так это предпочтение .htaccess.dev над .htaccess, если оно существует, и будет использовать .htaccessесли .htaccess.dev не существует.

Однако, по моему мнению, вы делаете что-то не так, если вам нужно настроить .htaccess для каждой среды:)

Обновите с рабочим примером:

Если вы установите AccessFileName .htaccess.dev .htaccess в вашей конфигурации Apache (например, vhost, он будет работать как надо):

# curl -sI http://example.com/test.html | grep "x-htaccess"
x-htaccess: dev
# mv .htaccess.dev htaccess.dev
# curl -sI http://example.com/test.html | grep "x-htaccess"
x-htaccess: default

Содержимое .htaccess равно Header set x-htaccess default, а содержимоеиз .htaccess.dev равен Header set x-htaccess dev.

...