Заблокируйте запрос на получение каталога с помощью .htaccess

#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