htaccess - запрет доступа к папке и всему, что внутри неё

50
На сайте с 21.09.2020
Offline
7
520

Если в корневой папке домена находится подпапка с файлами и мы к этой подпапке с файлами хотим закрыть доступ, то в файле .htaccess нужно прописать следующую команду:

Например хотим закрыть доступ к папке 1

RewriteEngine on
RedirectMatch 403 ^/папка1/.*$

А если мы хотим закрыть доступ ещё и к папке 2, то нужно написать следующее:

RewriteEngine on
RedirectMatch 403 ^/папка1/.*$
RedirectMatch 403 ^/папка2/.*$

Но я не хочу создавать новые строки RedirectMatch 403

Я хочу в одной строке RedirectMatch 403 перечислять все папки, а как их перечислить не знаю. Типо так:

RewriteEngine on
RedirectMatch 403 ^/папка1, папка2/.*$ - но эта конструкция не правильная

totamon
На сайте с 12.05.2007
Offline
437
#1
а я хочу мира во всем мире, но не выходит пока(
Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
M
На сайте с 04.12.2013
Offline
223
#2

В условии можно использовать подстановку из правила, например $1, и -d 😉

http://u75.ru/rewritecond

Но это все идиотизм. Уберите папки за пределы корня сайта.


P.S. RewriteEngine и RedirectMatch никак не связаны 😀

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
M
На сайте с 04.12.2013
Offline
223
#3
Если охота в RedirectMatch по конкретным именам делать, в регулярке можно писать так /(dir1|dir2 и т.д.)/, но тогда все равно придется лезть в .htaccess, чтобы добавить новые папки.
50
На сайте с 21.09.2020
Offline
7
#4
miketomlin #:

В условии можно использовать подстановку из правила, например $1, и -d 😉

http://u75.ru/rewritecond

Но это все идиотизм. Уберите папки за пределы корня сайта.


P.S. RewriteEngine и RedirectMatch никак не связаны 😀

Не хочу. У меня будет много автоподдоменов в директории домена. Если я уберу за пределы корня сайта, то папки автоподдоменов будут селиться в общей папке, где есть ещё папки других сайтов - визуально получится мусор. Поэтому необходимо, чтобы папки автоподдоменов были в директории домена, но есть одно но. Если я добавляю папку автоподдомена в директорию домена, то эта папка будет доступна по двум адресам - как поддомен, так и раздел сайта. Поэтому мне нужна конструкция в htaccess, чтобы запретить доступ к папке, которая будет вести себя как раздел. В приведённой выше конструкции в первом посте - закрывается доступ для раздела, но для поддомена всё открыто. И мне хотелось бы папки перечислить в один ряд, а не столбиком.

M
На сайте с 04.12.2013
Offline
223
#5
53ted0rdyyxt #:
Если я уберу за пределы корня сайта, то папки автоподдоменов будут селиться в общей папке, где есть ещё папки других сайтов - визуально получится мусор.

Ну, понятно: папки сайтов == корневые папки этих сайтов. Школота 😀

Можно в «общей папке» разместить только одну доп. папку с похожим на имя корня проекта именем, и внутри нее размещать папки поддоменов. Но лучше сделать корень проекта на один уровень глубже. Или даже на два, например у нас на паркинге используется такая структура:

parking/_add/domain1.com – корневой каталог первого припаркованного домена;

parking/_add/domain2.com – корневой каталог второго припаркованного домена;

parking/_add/localhost – каталог, указанный в качестве корня проекта.

SeVlad
На сайте с 03.11.2008
Offline
1609
#6
miketomlin #:
Можно в «общей папке» разместить только одну доп. папку

Я подозреваю что у ТСа панель (ISP напр) и уже рабочий сайт на домен. Если бы домен только создавался на сервере - это было бы легко. А с рабочим можно поиметь немало разного геммора (а можно и не поиметь ;)).

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
M
На сайте с 04.12.2013
Offline
223
#7

Специально для школоты:

public/abrakadabra/domain1.com

public/abrakadabra/domain2.com

и т.д. (public – это корень).

RewriteEngine on
RewriteRule ^abrakadabra/ - [NC,F]

Наверно, по аналогии можно и Redirect 403 использовать.

M
На сайте с 04.12.2013
Offline
223
#8
SeVlad #:
Я подозреваю что у ТСа панель (ISP напр) и уже рабочий сайт на домен.

Так вариант с одной доп. папкой в «общей папке» как раз для таких ленивых. Сам по себе этот вариант один из самых идиотских. Чаще всего в CPanel'и используется.

P.S. Там еще нужно смотреть, как используются эти скрытые папки. Если в них выполняется рерайт, то это проблема (в общей папке что ли размещать .htaccess?).

SeVlad
На сайте с 03.11.2008
Offline
1609
#9
miketomlin #:
Специально для школоты:

Давай я попробую пояснить как я понял.

в public/abrakadabra/ - находится сайт domain.com

в public/abrakadabra/sub находится сайт sub1.domain.com

в public/abrakadabra/sub2 находится сайт sub2.domain.com

Теперь внимание! Сайт domain.com имеет свои каталоги: public/abrakadabra/admin/, public/abrakadabra/js/, public/abrakadabra/css и тд. (Я не утверждаю, я допускаю). Поэтому ТС хочет явно указать какие подкаталоги закрыть.


Но перечитав старпост у меня возник когнитивный диссонанс - какой смысл в поддменах если запрещать к ним доступ? Кто-то может пояснить?

M
На сайте с 04.12.2013
Offline
223
#10
SeVlad #:
в public/abrakadabra/ - находится сайт domain.com

Не, я там дописал, что корень – public (используйте любое/имеющееся имя).

abrakadabra – папка со сложным названием, которую трудно обнаружить, а уже в ней папки доп. доменов. Типа бутылочное горлышко: через одну папку блокируем доступ ко многим.

P.S. Для блокировки не обязательно использовать сложное название папки.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий