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

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

  • css.mydomain.com
  • js.mydomain.com
  • img.mydomain.com

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

Проблема в том, что я могу получить доступ к основному сайту, используя один из доменов css.mydomain.com, js.mydomain.com, img.mydomain.com

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

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

1 ответ

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

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]

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

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

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

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

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

Другие вопросы по тегам