Я хочу внести этот файл в белый список только в каталоге .well-known.
Мой файл htaccess
Options -Indexes
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
<IfModule mod_rewrite.c>
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)\." - [F]
</IfModule>
мои попытки
<Files .well-known/security.txt>
Allow from all
Satisfy Any
</Files>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^(public|.well-known/security.txt)
RewriteRule ^(.*)$ public/$1 [L]
Заключение ! Я просто хочу внести файл security.txt в белый список только в .well-known каталоге






RewriteCond %{REQUEST_URI} !^public RewriteRule ^(.*)$ public/$1 [L]
Это условие ошибочно, так как серверная переменная REQUEST_URI всегда начинается с косой черты, поэтому выражение !^public всегда успешно.
(Из этого я предполагаю, что у вас должен быть еще один файл .htaccess в подкаталоге /public, иначе вы получите цикл перезаписи.)
Как только вы это поймете, вы сможете изменить правило так, как вы пытались. Например:
RewriteCond %{REQUEST_URI} !^/(public|\.well-known/security\.txt$)
RewriteRule ^(.*)$ public/$1 [L]
ОДНАКО другое ваше правило блокирует все запросы к физическим файлам/каталогам, которые начинаются с точки, поэтому запрос все равно будет заблокирован (со статусом 403 Forbidden). Это правило также не подходит для других запросов (оно должно быть до перезаписи в подкаталог /public).
Вместо этого вам лучше сделать исключение в виде отдельного правила в начале файла. Например, вместо этого попробуйте следующее:
Options -Indexes
RewriteEngine on
# Prevent further processing for special files
RewriteRule ^\.well-known/security\.txt$ - [L]
# Block access to all dot-files
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule (^|/)\. - [F]
# Rewrite request to "/public" subdirectory
RewriteCond %{REQUEST_URI} !^/public
RewriteRule (.*) public/$1 [L]
Обертка <IfModule> в этом единственном правиле была лишней.
@Joukhar, хорошо, что это решение сработало для вас, в качестве напоминания (на случай, если вы забыли), вы также можете голосовать за ответы, голосование за отличается от принятия ответа, ура и продолжайте публиковать хорошие вопросы и ответы на этот отличный сайт.
Не могли бы вы указать, с какого URL-адреса вы хотите перенаправить ИЛИ переписать ИЛИ что-нибудь еще? Пожалуйста, обновите свой вопрос с той же информацией, спасибо.