#php #.htaccess
Вопрос:
Я хочу заблокировать все HTTP GET
запросы в каталог, содержащий видео и изображения, такие как upload
папка. И если пользователь идет с HTTP POST
, чем разрешить пользователю доступ. В настоящее время я использую
#Contents of .htaccess
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^PATH.*$ [NC]
RewriteCond %{HTTP_REFERER} !^PATH.*$ [NC]
RewriteRule .(mp4|mp3|avi)$ - [F]
Но он блокирует все запросы. Я хочу получить доступ к этому с HTTP POST
запросом.
Пожалуйста, помогите мне с этим.
Комментарии:
1. «И если пользователь приходит с HTTP-сообщением, чем разрешить пользователю доступ». — Зачем вам нужно разрешать отправлять запросы в каталог, содержащий видео и изображения?
Ответ №1:
Вы можете использовать следующее mod-rewrite
решение на основе, чтобы заблокировать все GET
запросы на upload
папку.
RewriteEngine On
RewriteCond %{THE_REQUEST} GETs/upload [NC]
RewriteRule ^ - [F,L]
Или
RewriteEngine On
RewriteCond %{REQUEST_METHOD} GET
RewriteRule ^upload - [F,L]
Комментарии:
1. Я использовал это, но доступ к каталогу осуществляется с помощью
HTTP GET
Я хочу заблокировать егоGET
, когда пользователь приходит, но не когда пользователь приходит сHTTP POST
2. @Их, если это сработает. Попробуйте разместить код в верхней части вашего htaccess.
3. Это единственный сценарий в моем файле.
4. Позвольте мне прояснить, что я тестирую его
PostMan
и отправляю запрос непосредственно в файл, какhttp://localhost/Test/uploads/Full-Send_3.mp4
с помощью методаPOST
amp;GET
, и все равно получаю этот файл.5. Это сработало, но еще одна вещь, в которой у меня есть подкаталоги, как это ограничить?
Ответ №2:
Вам нужно написать правила htaccess, которые разрешат только отправлять запросы. Следуйте следующему сценарию.
<Directory "/var/www/folder">
<Files "index.php">
Require method POST
</Files>
</Directory>
Однако, поскольку это часть раздела авторизации, вы можете попробовать вместо этого:
<Directory "/var/www/folder">
<Files "index.php">
<LimitExcept POST>
Order allow,deny
Deny from all
</LimitExcept>
</Files>
</Directory>
Комментарии:
1. Спасибо вам за ваш ответ. Я пробую ваш код с заменой
/var/www/folder
, чтобыhttp://localhost/Test/
он возвращалсяInternal Server Error
2. Нет, это будет путь к вашему каталогу, а не URL-адрес вашего браузера
3. Я заменил его на
F:Workhtdocsprojectupload
и пытаюсь получить его,HTTP POST
но возвращаюсь500 Internal Server Error
4. попробуйте, предоставив /проект/загрузку
5. Директива каталога не может быть использована в
htaccess
Вы можете использоватьFilesMatch
илиmod-rewrite
вместо этого .
Ответ №3:
Вы также можете сделать что-то вроде следующего, используя выражение Apache 2.4 в .htaccess
:
<If "%{REQUEST_URI} =~ m#^/upload/#">
Require method POST
</If>
Любой URL-путь, который начинается /upload/
, будет заблокирован, если только это не запрос на публикацию.
Комментарии:
1. Спасибо, Что Посмотрели на это. Но извинения не сработали.
2. И еще одна вещь, этот скрипт предназначен для пользовательских CMS, таких как wordpress