#regex #.htaccess #url-rewriting #user-agent
#регулярное выражение #.htaccess #url-переписывание #user-agent
Вопрос:
Я хочу настроить перенаправление, если пользователь не использует Chrome, Safari, Opera или Mozilla.
Для обратной задачи (если я не хочу Chrome и т. Д.) Есть решение:
RewriteCond %{HTTP_USER_AGENT} Chrome
RewriteRule ^abcd.html$ chrome.html [NC,L]
RewriteCond %{HTTP_USER_AGENT} Safari
RewriteRule ^abcd.html$ safari.html [NC,L]
Добавление !
перед не работает
Комментарии:
1.
!
Префикс означаетno
. Это должно сработать:RewriteCond %{HTTP_USER_AGENT} !Chrome
затем добавьтеRewriteCond %{HTTP_USER_AGENT} !Safari
и т. Д. Могу я спросить, почему вы хотите это сделать?2. Спасибо, я сейчас проверю. Чтобы заблокировать IE и другие странные браузеры, в которых моя система может выйти из строя
3. Вы знаете, что строка User-Agent может быть подделана, верно? Какова реальная причина для этого? Звучит как проблема X-Y.
4. То, что вы хотите, обычно делается с помощью небольшого количества JavaScript на стороне клиента — вы можете гораздо надежнее определять тип браузера в самом браузере.
5. Вы могли бы рассмотреть возможность отображения сообщения в браузерах, с которыми ваш сайт плохо работает. Вы можете настроить таргетинг на более старые версии IE с помощью условных комментариев, например: quirksmode.org/css/condcom.html или используйте JS, как говорит @mustaccio
Ответ №1:
Отрицание выполняется с помощью !
оператора. Использование [NC]
флага также приведет к удалению строк, таких как chrome
, chRome
и т. Д:
RewriteCond %{HTTP_USER_AGENT} !Chrome [NC]
RewriteRule ^abcd.html$ chrome.html [NC,L]