Назад | Перейти на главную страницу

htaccess: как перенаправить на 404, если параметр url отсутствует или недействителен?

Предположим следующую структуру папок на веб-сервере (Apache): https://somedomain.com/parentfolder/childfolder.

С помощью .htaccess, Я хочу отобразить childfolder и любой из его дочерних элементов (файлов и папок) только URL-адрес содержит определенный параметр. Например, страница должна отображаться, если ее запросил:

https://somedomain.com/parentfolder/childfolder?secretparameter=secretvalue123

Однако если

тогда должна быть возвращена ошибка 404.

Есть ли у вас идеи, как для этого должны выглядеть правила .htaccess? Ваша помощь очень ценится, спасибо.

Итак, если строка запроса не secretparameter=secretvalue123 при запросе ресурса в childfolder затем выдайте 404 не найдено. Вы можете сделать что-то вроде следующего в верхней части .htaccess файл в корне документа с помощью mod_rewrite:

RewriteEngine On
RewriteCond %{QUERY_STRING} !=secretparameter=secretvalue123
RewriteRule ^parentfolder/childfolder - [R=404]

Это блокирует запрос, если строка запроса не совсем равна secretparameter=secretvalue123. (Вам не нужен L при указании кода, отличного от 3xx, поскольку это подразумевается.)

Вы можете упростить RewriteRule немного, если вместо этого вы поместили эти директивы в подкаталог, который хотите защитить. т.е. в /parentfolder/childfolder/.htaccess. Например:

RewriteRule ^ - [R=404]