全新的.htaccess和我已经阅读howto的几个星期,随着负载的实验。 我迫切需要一个人来看待我的事情,告诉我是否有任何错误或只是简单的不会工作:)这里是:
我认为这是重复的,可以或应该结合,但我不知道如何去做。 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
首先,你的语法是错误的。
.htaccess
文件不需要围绕指令的尖括号(“<>”); 只有在创build小节和指定每节设置时才需要它们
<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
deny from *.ru deny from tamanria.com
这将强制一个DNS查找每个请求到您的网站。 由于您也在下面设置了引荐来源阻止,所以我在猜测您正试图阻止从您的网站被盗链的内容。 如果是这样,这些规则将不会阻止。
由于您只是试图阻止网站被盗链,所以您可以放置设置您想要允许的网站的规则,或者拒绝那些已经被盗链的网站。 我宁愿防止这个问题,而不是看到带宽的高峰,然后疯狂地试图找出什么网站有热链接的内容。
我想至less可以做到以下几点
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]
虽然Massimo刚刚更正了wiki格式,但代码中仍然存在错误。
RewriteCond %{HTTP_REFERER} .ru [NC,OR]
会阻止string中包含某个字符(ru)的任何内容。
所以,任何包含aru的url都会被拒绝。 应该使用更严格的规则集。
RewriteRule .* - [F]>
将导致错误500,因为它是一个无效的string。 删除>会解决这个问题。
虽然我以前有超过50个代表,但我现在有1个,所以我不能评论你的答案。 请把答案合并成一个评论。 谢谢。
谢谢user46528和Massimo,希望我没有错过任何人。 我不知道如何将我的答案合并成一个评论虽然:(对于.ru我试图实际上阻止任何域名结尾.ru链接。我发现很多.ru讨厌的小网站链接出于某种原因。
当我搞清楚如何格式化帮助请求时,<code在这里是错误的添加:)
所以我看到了这个组合部分,但是我看到了两种不同的types,你写下它的方式是否重要?
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]
要么
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]>
如果我不得不猜测,我会说这两个都很好,但第一个更清洁。
其次,我是否模糊了是否允许,否认简单地倒退,或者我应该完全摆脱它,我不想创build一个DNS查找那么多。
这ceplaocal2003是一个工作网站,我维护和最近检查我的search引擎优化和search谷歌ceplocal2003我发现很多无用的网站,似乎只是连接到我们的网站链接农场。 这是我开始阅读.htaccess的地方。
所以,有这些信息的任何机会,上面的build议可以编译成一个块为我工作。
如果我得到你们两个的意见,我应该阻止所有的“盗链”和其他网站完全窃取,然后只允许那些需要允许像黄页和金本等
小男孩,我曾经感觉像爱丽丝摔倒兔子洞现在大声笑,一个星期前,我会认为htaccess是英特尔为主板devise的东西:)
顺序拒绝,允许是阻止IP /主机(并且不应该用于阻止主机,因为它将对可能被阻止的每个请求进行DNS查找)。
我个人的感觉是,你应该预先阻止任何盗链的企图,而不是阻止滥用它的企图。 如果你想阻止所有的.ru引用者,他们将被覆盖在你的图片的其他规则。
如果您想要阻止他们链接到您的网站,则需要编写一个更一般的规则,并将这些规则包含在阻止图片链接的规则之下:
RewriteCond %{HTTP_REFERER} ^http://(.*@)?([a-z0-9]+\.)*(refblock\.com|tamanria\.com|\.ru)(:[0-9]+)?(/.*)?$ [NC] RewriteRule .* - [F,L]
虽然StackOverflow男孩俱乐部再次排列不正确的答案,并掩盖正确的答案,我已经把数据整合到一个单一的职位,可以复制。 我没有足够的代表来编辑我以前的post,也没有评论Massimo的post,这在技术上是有效的,但是,会导致性能问题下降。 在拒绝从块中使用主机名是一个非常普遍的,新手的错误,99%的时间并没有真正解决问题。 拒绝区块将阻止任何包含以.ru或tamanria.com结尾的反向DNS的主机访问您的站点。 这是假设反向dnsconfiguration正确。 许多托pipe公司使用自己的域名进行反向映射,而不是使用正在提供的域名。 .ru的否定会阻止任何以.ru结尾的反向DNS查询的冲浪者,这可能是一个可接受的妥协。 但是,任何拥有IP地址而没有正确反向DNS的人在访问该站点时都会遇到延迟。 如果他们的网站有一个链接检查器或蜘蛛来查找内容,那么这将是有效的,但是,阻止服务器的IP地址或IP地址范围会更安全。 拒绝声明中另一个常见但致命的错误是
deny from 1.2.3.*
尽pipe它看起来天真无邪,但最后的*表示需要在1.2.3.domain.com上检查该值,这将再次强制每个文件请求进行反向DNS查找。 要与拒绝块进行部分匹配,正确的格式是:
deny from 1.2.3.
要么
deny from 1.2.3.0/24
无论如何,以下是在.htaccess中应该使用的
AddHandler server-parsed .htm Addhandler application/x-httpd-php .html .php AddType image/gif .gef RewriteEngine on 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] #include this line only if you want to block ALL referring access from refblock.com, tamanria.com and all .ru sites. RewriteCond %{HTTP_REFERER} ^http://(.*@)?([a-z0-9]+\.)*(refblock\.com|tamanria\.com|\.ru)(:[0-9]+)?(/.*)?$ [NC] RewriteRule .* - [F,L]
我已经删除了Refererblock.gef的检查,因为它不是被阻止的扩展之一,并且是一个不必要的检查。 当我早些时候写规则的时候,我把它误读为.gif而不是.gef。 此外,作为validation上述.htaccess的问题,我注意到你的.gef文件是与不正确的MIMEtypes的文本/平原,而不是图像/ GIF。 我已经包含上面的AddType指令来修复它,以便Firefox用户不会被提示将图像保存到磁盘。
我不知道你是否想parsingSSI和PHP的.html文件。 我已经删除了.htmlparsing,因为Apache并没有真正处理。 使用Apache2,如果您需要在同一页上同时执行PHP和SSI,则应该使用处理程序parsing页面。
希望你在得到这些信息之前迅速得到这些信息。 但是,如果历史告诉我有关这个网站的任何事情,我们会看到这个答案合并到了更高业力的人的回应中。