Я надеюсь, что кто-то может мне помочь, так как у меня очень ограниченные знания о вещах, связанных с сервером.
У меня есть сайт WordPress, на котором я хочу ограничить доступ к каталогу /wp-content/uploads/ только авторизованными пользователями. Для этого я использовал обходной путь, указанный в следующей ссылке на сервере nginx :
https://wordpress.stackexchange.com/questions/37144/how-to-protect-uploads-if-user-is-not-logged-in
, и это решение работает нормально. Однако есть проблема.
У меня есть несколько PDF-файлов, встроенных через Google doc embed на определенные страницы.Встраивание документа Google используется для загрузки PDF-файлов следующим образом:
<iframe src="//docs.google.com/viewer?url=https://link-to-file.pdf&hl=en_US&embedded=true" class="" style="width:100%; height:500px; border: none;" scrolling="no"></iframe>
Мое правило nginx выглядит следующим образом:
location ~* /(?:uploads)/* {
rewrite /wp-content/uploads/(.*)$ /dl-file.php?file=$1;
}
Как я могу исключить указанный выше iframe или //docs.google.com
URL-адрес из этого правила?
Будем признательны за любую помощь.
Спасибо
Бакар
Вы можете использовать рефереры(http://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers)
valid_referers none blocked server_names docs.google.com;
Вместо этого вы можете просто использовать переменную $invalid_referer в вашем блоке местоположения.
if ($invalid_referer) {
rewrite /wp-content/uploads/(.*)$ /dl-file.php?file=$1;
}