RewriteCond:将HTTP_REFERER与HTTP_HOST匹配的任何解决方法?

时间:2011-05-11 16:42:55

标签: php svn .htaccess mod-rewrite

1)我需要验证连接是由我的同一站点还是其他人引用。 2)我不能简单地手动输入HTTP_HOST,因为.htaccess文件应由subversion处理并在具有不同HTTP_HOST值的不同开发环境中共享

因此,我们的目标是找到一种解决方法,使这个条件无论环境如何都能透明地工作,并且不需要手动修复就可以通过svn轻松处理htaccess。

谢谢!

1 个答案:

答案 0 :(得分:1)

使用Apache 2,您可以这样做:

RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} ^[^:/?#]+://([^/?#]+)  # get authority
RewriteCond %1 ^(?:(?:[A-Za-z0-9-._~!$&'()*+,;=:]|%[0-9A-Fa-f]{2})*@)?((?:[A-Za-z0-9-._~!$&'()*+,;=]|%[0-9A-Fa-f]{2})*)(?::\d+)?$  # get host name
RewriteCond %1/%{HTTP_HOST} !^([^/]+)/\1$  # compare to HTTP_HOST
RewriteRule ^ …

请注意,如果发出HTTP / 1.1请求, HTTP_HOST 也可能为空。