Я пытаюсь добавить условный оператор, используя директиву Apache If в моем файле .htaccess.
Я ссылался на эту страницу http://httpd.apache.org/docs/trunk/mod/core.html#if, но она не очень детализирована / приводит много примеров. Это два неполных примера:
<If% {REQUEST_METHOD} В GET, HEAD, OPTIONS>
и
<If "$ req {Host} = ''">
Поэтому я попытался добавить это в мой файл .htaccess:
<If% {SERVER_PORT} В GET, HEAD, OPTIONS> # здесь пока ничего </ If>
Но я продолжаю получать ошибку 500, когда я пытаюсь загрузить страницу. Это на моей локальной установке, и раньше она работала нормально (или если я удалю этот код). Я полагаю, что я AllowOverride All
настроил глобально, и контекст для директивы If должен позволять ей присутствовать в .htaccess («Контекст: конфигурация сервера, виртуальный хост, каталог, .htaccess»).
Может ли кто-нибудь дать мне несколько примеров того, как правильно использовать директиву <If>, или несколько советов относительно того, почему она не работает для меня?
Благодарность!
SERVER_PORT
inGET,HEAD,OPTIONS
не имеет никакого смысла (SERVER_PORT
это будет номер порта порта, на который был получен запрос).Ответы:
<If>
Директива доступна только в Apache 2.4+ , а не 2,2 или выше.http://httpd.apache.org/docs/2.4/mod/core.html#if
Документация отсутствует в 2.2:
http://httpd.apache.org/docs/2.2/mod/core.html#if
источник
<If>
доступно только в Apache 2.4+, поэтому сначала убедитесь, что у вас есть эта версия.Примеры
Альтернативы
<If>
Есть несколько других решений для выполнения условных операторов в Apache 2.2, если вы все еще застряли с этим.
Вы можете установить переменные окружения через:
SetEnvIf
RewriteMatch
Затем вы можете выполнить условные операторы, используя
Пример:
источник
<IfDefine>
директива только анализирует при запуске, иparameter-name
только команда может проходить по командной строке, используяhttpd -Dx=y