.htaccess RewriteCond, где URI не содержит домена

Я искал ответ на этот вопрос в Google и StackOverflow, но тот факт, что я мало знаю о .htaccess, не помогает мне решить, какие правильные ответы для моей ситуации, поэтому я спрашиваю здесь.

Моя ситуация такова, что у меня есть несколько сайтов, которые используют тот же физический каталог, что и их корень на сервере.

Все это работает нормально, но я хотел убедиться, что каждый сайт не может получить доступ к изображениям друг друга и т. д. из браузера, если они не находятся в правильном домене.

В настоящее время у меня есть такая файловая структура:

/resources/{resource}/{full_domain_name}

Так, например, www.domain.co.ukбудет иметь такую ​​структуру:

http://www.domain.co.uk/resources/images/www.domain.co.uk/some_image.jpg

Но если www.domain_2. co.ukсуществует, используя тот же физический каталог для корня сайта, тогда они могут просматривать ресурсы другого домена из своего собственного домена, например:

http://www.domain_2.co.uk/resources/images/www.domain.co.uk/some_image.jpg

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

Я попытался поместить файл .htaccess в каталог /resources, но я застрял с регулярными выражениями и т. д.

В основном я хочу убедиться, что URI содержит текущее доменное имя, в противном случае выполняется перенаправление на страницу с ошибкой 403. .

Вот что я придумал:

RewriteCond %{REQUEST_URI} !^(/resources/[^/]*/%{HTTP_HOST})(.*)$
RewriteRule ^(.*)$ /error/403.php

Причина, по которой я добавил бит [^/], заключается в том, что есть несколько папок, например:

/resources/images/{full_domain_name}
/resources/scripts/{full_domain_name}
/resources/stylesheets/{full_domain_name}

Может ли кто-нибудь помочь мне с этим условия?

Будем признательны за любую помощь.

13
задан gion_13 23 September 2014 в 16:57
поделиться