.htaccess HTTP_USER_AGENT не работает

У меня проблемы с файлом.htaccess, обычно он проверяет реферер пользователя и, если он есть на моем сайте, разрешает доступ к потоковым файлам mp4, но теперь я хочу разрешить потоковую передачу на устройства Android и iOS, я использую html5 тег, но он не отправляет http_referer, поэтому я хочу проверить пользовательский агент, чтобы разрешить поток файлов mp4, это то, что у меня есть, но это просто не работает.

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "Android|iPod|iPhone|iPad" [NC,OR]
RewriteCond %{HTTP_REFERER} !^http://(direct\.|www\.)?mysite\.com/.*$ [NC]
RewriteRule .*\.(mp4)$ http://www.mysite.com [R,NC]

2 ответа

Решение

Вы используете отрицание здесь, поэтому вы должны потерять [OR] и включать !:

 RewriteCond %{HTTP_USER_AGENT} !(Android|iPod|iPhone|iPad) [NC]

То, что делает ваше правило - это перенаправление, когда оно не является правильным реферером и не является мобильным пользовательским агентом. Что у тебя было раньше:

RewriteCond %{HTTP_REFERER} !^http://(direct\.|www\.)?mysite\.com/.*$ [NC]
RewriteRule .*\.(mp4)$ http://www.mysite.com [R,NC]

Говорит: если рефери не из http://(direct\.|www\.)?mysite\.com/затем перенаправьте запрос.mp4 на http://www.mysite.com, Логика здесь в том, что если реферер верен, он может просто получить файл mp4.

Чтобы следовать логике, в которой вы говорите, что реферер верен или пользовательский агент является мобильным, обслуживайте mp4, вам нужно полностью отрицать это. (A or B)-> do something, чтобы !(A or B) -> don't do something, что переводится как: !A and !B -> don't do something,

Таким образом, вам нужно отменить проверку мобильного агента пользователя и вместо ИЛИ использовать AND (что является значением по умолчанию для условий перезаписи).

Пытаться

RewriteCond %{HTTP_USER_AGENT} (Android|iPod|iPhone|iPad) [NC,OR]
Другие вопросы по тегам