0

我在 Apache 上使用 mod_rewrite 作为访问控制。规则的设置使得如果用户未登录,他将无法访问大多数页面。某些页面(都具有 *.php 扩展名)被站点管理员选择为“公共页面”。“公共页面”确实授予未登录用户的权限。

未经明确许可公开的各种图片和其他资源,匿名用户无法访问;他们将用户发送到主页。这正是我想要的行为。

问题是这些公共页面有各种各样的嵌入元素,从遥远的目录链接。这些元素被相同的重写规则拒绝。

是否可以传递来自重写页面的任何资源请求,但要阻止它们?

4

1 回答 1

0

是否可以传递来自重写页面的任何资源请求,但要阻止它们?

如果引用者是一个 php 页面(或任何其他公共页面)的 URL,您可以对 a 中的%{HTTP_REFERER}var进行额外检查以允许访问。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 回答