htaccess 新手需要您的意见和精英技能:)

htaccess 新手需要您的意见和精英技能:)

.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]

相关内容