Mod rewrite Mod_重写为访问控制-如何传递所有页面资源?

Mod rewrite Mod_重写为访问控制-如何传递所有页面资源?,mod-rewrite,Mod Rewrite,我在Apache上使用mod_rewrite作为访问控制。规则设置为,如果用户未登录,将无法访问大多数页面。某些页面(都有*.php扩展名)被站点管理员选择为“公共页面”。“公共页面”向未登录的用户授予权限 未经明确授权公开的各种图片和其他资源无法被其他用户访问;他们将用户发送到主页。这正是我想要的行为 问题是这些公共页面有各种各样的嵌入元素,它们都是从远程目录链接而来的。这些元素被相同的重写规则拒绝 是否可以传递来自重写页面的任何资源请求,但在其他情况下将其阻止? 是否可以传递来自重写页面的任

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

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

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

是否可以传递来自重写页面的任何资源请求,但在其他情况下将其阻止?

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

您可以对
RewriteCond
中的
%{HTTP_REFERER}
变量进行额外检查,以允许访问作为php页面(或任何其他公共页面)的URL。这样做的问题是,推荐人可能会被欺骗。它看起来像:

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]
规则本身可能会有所不同,具体取决于您现有的规则(如果referer与上述规则之一匹配,则此规则仅传递请求)