Rozejrzałem się po Google i StackOverflow, aby uzyskać odpowiedź na to pytanie, ale fakt, że nie wiem zbyt wiele na temat .htaccess nie pomaga mi zdecydować, jakie poprawne odpowiedzi bo moja sytuacja jest, więc proszę o to tutaj.. Htaccess RewriteCond gdzie URI nie zawiera domeny
Moja sytuacja polega na tym, że mam kilka witryn, które używają tego samego katalogu fizycznego co katalog główny na serwerze.
Wszystko działa dobrze, ale chciałem się upewnić, że każda witryna nie ma dostępu do innych obrazów itp. Z przeglądarki, chyba że znajdują się we właściwej domenie.
Obecnie mam strukturę plików takiego:
/resources/{resource}/{full_domain_name}
Tak na przykład www.domain.co.uk
miałoby strukturę takiego:
http://www.domain.co.uk/resources/images/www.domain.co.uk/some_image.jpg
Ale jeśli www.domain_2.co.uk
istnieje przy użyciu tego samego katalogu fizycznego na miejscu root, a następnie mogą przeglądać zasoby innej domeny z własnej domeny, na przykład:
http://www.domain_2.co.uk/resources/images/www.domain.co.uk/some_image.jpg
To naprawdę nie jest poważny problem, ponieważ nie ma absolutnie żadnych poufnych informacji przechowywanych w tych katalogach, ale jest to bardziej irytujące i wolałbym, żeby użytkownicy nie byli w stanie tego zrobić (nie, że ktokolwiek faktycznie miał do tej pory).
Próbowałem umieszczenie pliku .htaccess w katalogu/Resources ale utknąłem z wyrażeń regularnych itp
Zasadniczo chcę, aby upewnić się, że URI zawiera aktualną nazwę domeny inaczej przekierować do 403 strona błędu.
To właśnie wymyśliłem:
RewriteCond %{REQUEST_URI} !^(/resources/[^/]*/%{HTTP_HOST})(.*)$
RewriteRule ^(.*)$ /error/403.php
Powodem umieścić w [^/]
nieco dlatego istnieje kilka folderów, na przykład:
/resources/images/{full_domain_name}
/resources/scripts/{full_domain_name}
/resources/stylesheets/{full_domain_name}
Czy ktoś może mi pomóc z tymi warunki?
Każda pomoc zostanie doceniona.
Jaki jest wynik Twojej obecnej reguły? Wygląda na to, że zadziała, z wyjątkiem tego, że nie potrzebujesz żadnego '()' wokół '/ resources/[^ /] * /% {HTTP_HOST}. *' –
@Michael Aktualnie, jeśli jestem na www.domain.co .uk i przejdź na stronę www.domain.co.uk/resources/stylesheets/www.domain.co.uk/style.css, na przykład zawsze przekierowuje mnie do pliku /error/403.php. Kiedy usuwam regułę .htaccess, znajduje plik tak, jak powinien normalnie. –
W rzeczywistości nie potrzebujesz całego '% {REQUEST_URI}' reprezentowanego w wyrażeniu regularnym. Możesz po prostu dopasować http_host 'RewriteCond% {REQUEST_URI}! ^. +% {HTTP_HOST}' –