我的网站有很多404点击到PDF页面,这些页面在网站上从未存在过。这些都是垃圾邮件主题。pdf的网址。我每天收到几十个这样的网站,这比真正的网站流量要高得多。
我现在为每一个添加410个重写。
我可以使用htaccess规则完全阻止这个流量到达这个网站吗?在它变成404之前?
我可以使用htaccess规则完全阻止这个流量到达这个站点吗?
您可以使用.htaccess
来防止请求通过使用前端控制器模式的CMS(如WordPress, Joomla等)路由-如果这就是您所说的"站点"。然而,当.htaccess
文件被处理时,请求已经到达您的服务器,所以在.htaccess
中做任何事情都不一定会帮助一个"静态站点"。
如果你已经返回404(或410)-在它到达你的网站-那么问题已经解决了。
唯一潜在的问题是,如果请求是通过您的CMS路由的,404是由您的CMS触发的,而不是Apache。这将表明您的指令在错误的地方在您的.htaccess
文件(或根本不存在)?像这样的阻塞指令需要放在.htaccess
文件的顶部,在任何现有的重写之前。
例如:
# Prevent 404 request being routed unnecessarily through CMS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .pdf$ - [NC,R=404]
提供410 Gone而不是404没有任何优势,除非这些文件以前存在,并且您试图从搜索引擎中删除它们(或告诉第三方它们不再存在)。
更新:
这段代码应该放在最上面还是在打开Wordpress规则:RewriteEngine On之后?
它需要在最上面,在# BEGIN WordPress
注释标记之前(你应该避免手动编辑WordPress部分的代码,因为WordPress本身维护这个部分,你的编辑将被覆盖)。
是的,这是在RewriteEngine On
指令之前。您不需要重复RewriteEngine
指令。RewriteEngine
指令的位置实际上并不重要。如果该指令在文件中有多个实例,那么最后一个实例胜出并控制整个文件。(通过简单地在末尾放置RewriteEngine Off
指令,可以快速有效地注释掉文件中所有的mod_rewrite指令。)