我在 Apache 上使用 mod_rewrite 作为访问控制。规则的设置使得如果用户未登录,他将无法访问大多数页面。某些页面(都具有 *.php 扩展名)被站点管理员选择为“公共页面”。“公共页面”确实授予未登录用户的权限。
未经明确许可公开的各种图片和其他资源,匿名用户无法访问;他们将用户发送到主页。这正是我想要的行为。
问题是这些公共页面有各种各样的嵌入元素,从遥远的目录链接。这些元素被相同的重写规则拒绝。
是否可以传递来自重写页面的任何资源请求,但要阻止它们?
我在 Apache 上使用 mod_rewrite 作为访问控制。规则的设置使得如果用户未登录,他将无法访问大多数页面。某些页面(都具有 *.php 扩展名)被站点管理员选择为“公共页面”。“公共页面”确实授予未登录用户的权限。
未经明确许可公开的各种图片和其他资源,匿名用户无法访问;他们将用户发送到主页。这正是我想要的行为。
问题是这些公共页面有各种各样的嵌入元素,从遥远的目录链接。这些元素被相同的重写规则拒绝。
是否可以传递来自重写页面的任何资源请求,但要阻止它们?
是否可以传递来自重写页面的任何资源请求,但要阻止它们?
如果引用者是一个 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]
规则本身可能会有所不同,具体取决于您现有的规则(如果引用者与上述规则之一匹配,则此规则只会传递请求)。