この質問に対する答えを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}
誰かがこれらの状態で私を助けることができますか?
どんな助けでもいただければ幸いです。