.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]