Назад | Перейти на главную страницу

htaccess - Как разрешить доступ только к статическим файлам для определенного домена

Идея состоит в том, чтобы обслуживать файлы js, css, img с использованием разных доменов, поэтому я создал следующие домены:

Главный URL-адрес сайта - www.mydomain.com. Когда я захожу на сайт, бросаю основной URL-адрес, все файлы img, css, js доставляются в поддомены пользователя. И все работает нормально.

ПРОБЛЕМА что я могу получить доступ к основному сайту, используя один из доменов css.mydomain.com, js.mydomain.com, img.mydomain.com

И я хочу отклонить каждый запрос, который не относится к типу файла js, css, img.

Как я могу сделать это через htaccess?

Подумал, что отвечу на это, так как столкнулся с той же проблемой.

RewriteCond %{HTTP_HOST} ^css.mydomain.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !\.(?:css)$ [NC]
RewriteRule ^ - [F]
RewriteCond %{HTTP_HOST} ^js.mydomain.com $ [NC]
RewriteCond %{REQUEST_FILENAME} !\.(?:js)$ [NC]
RewriteRule ^ - [F]
RewriteCond %{HTTP_HOST} ^img.mydomain.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !\.(?:jpg|jpeg|png|gif)$ [NC]
RewriteRule ^ - [F]

Таким образом, первая строка проверяет хост на соответствие строке соответствия (без учета регистра).

Вторая строка проверяет, НЕ соответствует ли запрошенный файл разрешенному расширению (поэтому вы можете изменить разрешенные расширения, добавив или удалив - разделенные вертикальной чертой). "?:" в регулярном выражении - это групповое совпадение без захвата.

Третья строка устанавливает ответ как Запрещено, если запрос НЕ соответствует разрешенным расширениям во второй строке.

Вы можете сделать это с помощью <files>. Это довольно хорошо объясняется здесь: http://www.askapache.com/htaccess/using-filesmatch-and-files-in-htaccess.html

Вы можете сначала запретить все, а затем разрешить только те типы файлов, которые вам нужны.