Использование переменных среды Apache для установки пользовательского ErrorDocument
У меня есть набор правил RewriteCond, которые тестируют различные мобильные устройства, а затем устанавливают переменные среды, такие как "env=device:.iphone" или "env=device:.smartphone", если пользовательский идентификатор совпадает с устройством iPhone или Android.
Сейчас я пытаюсь перенаправить пользователя на пользовательские страницы ошибок сервера 404/500 для каждого устройства с помощью страниц ошибок.
В идеале я хотел бы иметь возможность проверить наличие переменной там, а затем записать в пользовательскую строку ErrorDocument. Но Apache, похоже, не работает в этом случае.
Любые идеи, как я могу построить, если / еще тесты в файле Apache Conf для среды VAR?
2 ответа
Начиная с версии 2.3 Apache, вы можете использовать IF-структуры. Это описано в документации Apache.
ErrorDocument
не допускает ничего условного, но выполняет внутреннее перенаправление.
Вы должны быть в состоянии сделать это с помощью mod_rewrite:
ErrorDocument 404 /normal_404.html
RewriteEngine on
RewriteCond %{ENV:device:.iphone} 1
RewriteRule ^/normal_404.html$ /iphone_404.html [L]
В других ответах говорится, что вы должны иметь возможность использовать условие
<If "reqenv('device') == 'iphone'">
ErrorDocument 404 /error_pages/404.iphone.html
</If>