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


53ted0rdyyxt
243

Если в корневой папке домена находится подпапка с файлами и мы к этой подпапке с файлами хотим закрыть доступ, то в файле .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

а я хочу мира во всем мире, но не выходит пока(


miketomlin

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

http://u75.ru/rewritecond

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

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


miketomlin

Если охота в RedirectMatch по конкретным именам делать, в регулярке можно писать так /(dir1|dir2 и т.д.)/, но тогда все равно придется лезть в .htaccess, чтобы добавить новые папки.


53ted0rdyyxt

miketomlin #:

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

http://u75.ru/rewritecond

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

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

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


miketomlin

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

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

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

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

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

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


SeVlad

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

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


miketomlin

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

public/abrakadabra/domain1.com

public/abrakadabra/domain2.com

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

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

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


miketomlin

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

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

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


SeVlad

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 и тд. (Я не утверждаю, я допускаю). Поэтому ТС хочет явно указать какие подкаталоги закрыть.

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


miketomlin

SeVlad #:
в public/abrakadabra/ — находится сайт domain.com

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *