我的服务器上有一个PHP文件,我不希望任何没有正确引用的人访问它。
这是我现行的规则。
RewriteCond %{REQUEST_URI} .streamer\.php*
RewriteCond %{HTTP_REFERER} !.*domain.com.*
RewriteRule .* - [F]
此规则对mod_rewrite
是否足够友好?还是需要清洁或整理一下?它确实有效,但我不是mod_rewrite
的专家,我相信可能有比我的方法更好的代码。
答案 0 :(得分:1)
您可以将%{REQUEST_URI}
条件与规则本身结合起来,并且可以清理referer regex:
RewriteCond %{HTTP_REFERER} !^https?://[^/]+\.domain\.com/? [NC]
RewriteRule .streamer\.php - [F]
请注意,这也会阻止空白引用,就像您将链接直接复制并粘贴到浏览器的URL地址栏中一样。如果您想允许空白引用,则需要添加额外条件:
RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} !^https?://[^/]+\.domain\.com/? [NC]
RewriteRule .streamer\.php - [F]