Предположим следующую структуру папок на веб-сервере (Apache): https://somedomain.com/parentfolder/childfolder
.
С помощью .htaccess
, Я хочу отобразить childfolder
и любой из его дочерних элементов (файлов и папок) только URL-адрес содержит определенный параметр. Например, страница должна отображаться, если ее запросил:
https://somedomain.com/parentfolder/childfolder?secretparameter=secretvalue123
Однако если
secretparameter
не совсем secretvalue123
илиsecretparameter
пропал, отсутствует,тогда должна быть возвращена ошибка 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]