1) 我需要验证连接是由我的同一站点还是由其他人引用的。2)我不能简单地手动输入HTTP_HOST,因为.htaccess文件旨在由Subversion处理,并在具有不同HTTP_HOST值的不同开发环境中共享
因此,我们的目标是找到一种解决方法,使这种情况无论环境如何都能透明地工作,并使 htaccess 易于由 svn 处理,而无需手动修复。
谢谢!
使用 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也可以为空。