![htaccess 新手需要您的意见和精英技能:)](https://linux22.com/image/517257/htaccess%20%E6%96%B0%E6%89%8B%E9%9C%80%E8%A6%81%E6%82%A8%E7%9A%84%E6%84%8F%E8%A7%81%E5%92%8C%E7%B2%BE%E8%8B%B1%E6%8A%80%E8%83%BD%3A).png)
.htaccess 是全新的,我已经阅读了几周的操作指南,并进行了大量实验。我迫切需要有人帮我看看,告诉我是否有问题,或者根本无法工作 :) 就是这样:
我认为其中一些是重复的,可以或应该合并,但我不知道该怎么做。AddHandler 的东西是针对我遇到的一些 php 网站问题,命令允许拒绝是尝试阻止来自不良网站的链接,所有重写都是第二次尝试阻止除少数几个好网站之外的所有网站。这是几周来拼凑起来的,所以我不怀疑我在某个地方做错了。任何帮助都会很棒。提前谢谢。
<AddHandler server-parsed .htm
AddHandler server-parsed .html
Addhandler application/x-httpd-php .html .php>
<order allow,deny
allow from all
deny from *.ru
deny from tamanria.com>
<RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ceplocal2003.org(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yellowpages.ca(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?cep.ca(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?goldbook.ca(/)?.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|bmp|png|pdf)$ http://www.ceplocal2003.org/images/Refererblock.gef [R,NC]>
<RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} .ru [NC,OR]
RewriteCond %{HTTP_REFERER} refblock\.com
RewriteRule .* - [F]>
<RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} tamanria.com [NC,OR]
RewriteCond %{HTTP_REFERER} refblock\.com
RewriteRule .* - [F]>
<ErrorDocument 404 /Custom404.html>
enter code here
答案1
首先,你的语法是错误的。
.htaccess
文件不需要在指令周围使用尖括号(“<>”);只有在创建子部分并指定每个部分的设置时才需要它们,例如
<Directory /some/dir>
allow from all
</Directory>
此外,多次声明“RewriteEngine on”是多余的;一次就足够了(除非您在小节中使用它)。
最后但同样重要的是,你的“order”指令告诉 Apache,“allow”指令应该取得优先权而不是“拒绝”,因此您实际上允许从任何地方访问您的网站,因为在“允许所有人”启动后,您的“拒绝”指令甚至从未被处理。
这应该会更好:
AddHandler server-parsed .htm
AddHandler server-parsed .html
Addhandler application/x-httpd-php .html .php
order deny,allow
deny from *.ru
deny from tamanria.com
allow from all
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ceplocal2003.org(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yellowpages.ca(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?cep.ca(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?goldbook.ca(/)?.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|bmp|png|pdf)$ http://www.ceplocal2003.org/images/Refererblock.gef [R,NC]
RewriteCond %{HTTP_REFERER} .ru [NC,OR]
RewriteCond %{HTTP_REFERER} refblock\.com
RewriteRule .* - [F]
RewriteCond %{HTTP_REFERER} tamanria.com [NC,OR]
RewriteCond %{HTTP_REFERER} refblock\.com
RewriteRule .* - [F]
ErrorDocument 404 /Custom404.html
答案2
deny from *.ru
deny from tamanria.com
这将强制对发往您网站的每个请求进行 DNS 查找。由于您还在下面设置了引荐来源阻止,我猜您试图阻止从您的网站热链接的内容。如果是这样,这些规则就无法阻止这种情况。
由于您只是试图阻止盗链的网站,因此您可以设置规则来设置要允许的网站,或者拒绝盗链的网站。我更喜欢预防这个问题,而不是看到带宽激增,然后疯狂地试图找出哪个网站有盗链内容。
我认为至少可以做到以下几点
AddHandler server-parsed .htm
AddHandler server-parsed .html
Addhandler application/x-httpd-php .html .php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} ~Refererblock.gef$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(.*@)?([a-z0-9-]+\.)*(yellowpages\.ca|cep\.ca|goldbook\.ca)(:[0-9
]+)?(/.*)?$ [NC]
RewriteRule .*.(asf|mpg|mpeg|wmv|avi|rm|gif|jpeg|jpg|zip)$ http://www.ceplocal2003.org/images/Refererblock.gef [NC,F,L]
答案3
虽然 Massimo 刚刚纠正了 wiki 格式,但代码中仍然存在错误。
RewriteCond %{HTTP_REFERER} .ru [NC,OR]
将阻止字符串中包含somecharacter(ru)的所有内容。
因此,任何包含 aru 的 URL 都将被拒绝。应使用更严格的规则集。
RewriteRule .* - [F]>
将导致错误 500,因为它是一个无效的字符串。删除 > 可以解决这个问题。
虽然我之前有超过 50 个声望,但现在只有 1 个,所以我无法对您的回答发表评论。请将答案合并到评论中。谢谢。
答案4
顺序拒绝,允许用于阻止 IP/主机(并且不应该真正用于阻止主机,因为它会对每个可能被阻止的请求进行 DNS 查找)。
我个人的感觉是,你应该先发制人地阻止任何热链接尝试,而不是阻止滥用热链接的尝试。如果你想阻止所有 .ru 引荐来源,它们将受到图像的其他规则的约束。
如果您想完全阻止他们链接到您的网站,您需要编写一个更通用的规则,并将其包含在阻止图像热链接的规则之下:
RewriteCond %{HTTP_REFERER} ^http://(.*@)?([a-z0-9]+\.)*(refblock\.com|tamanria\.com|\.ru)(:[0-9]+)?(/.*)?$ [NC]
RewriteRule .* - [F,L]