0

アクセス制御として Apache で mod_rewrite を使用しています。ユーザーがログインしていない場合、ほとんどのページにアクセスできないようにルールが設定されています。特定のページ (すべて *.php 拡張子を持つ) は、サイトの管理者によって「公開ページ」として選択されます。「公開ページ」は、ログインしていないユーザーに許可を与えます。

明示的な公開許可が与えられていないさまざまな写真やその他のリソースには、anon ユーザーはアクセスできません。ユーザーをメインページに送ります。これはまさに私が望む動作です。

問題は、これらの公開ページに、離れたディレクトリからリンクされたあらゆる種類の要素が埋め込まれていることです。これらの要素は、同じ書き換え規則によって拒否されます。

書き換えられたページからのリソースに対するリクエストをパススルーすることはできますか?

4

1 に答える 1

0

書き換えられたページからのリソースに対するリクエストをパススルーすることはできますか?

リファラーがphpページ(または他の公開ページ)であるURLである場合、アクセスを許可するため%{HTTP_REFERER}にaの変数に対して追加のチェックを行うことができます。RewriteCondこの方法の問題は、リファラーがスプーフィングされる可能性があることです。次のようになります。

RewriteCond %{HTTP_REFERER} ^(http://your-domain.com)?/path/to/public\.php$ [OR]
RewriteCond %{HTTP_REFERER} ^(http://your-domain.com)?/path/to/another-public\.php$ [OR]
RewriteCond %{HTTP_REFERER} ^(http://your-domain.com)?/public/stuff/.*\.php$
RewriteRule ^ - [L]

ルール自体は、既存のルールによって異なる場合があります (これは、リファラーが上記のいずれかに一致する場合にリクエストを通過させるだけです)。

于 2012-09-26T21:02:35.017 に答える