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