【问题标题】:Using regex in htaccess to 410 status spammy URLs在 htaccess 中使用正则表达式访问 410 状态垃圾邮件 URL
【发布时间】:2016-02-26 03:03:09
【问题描述】:

我正在尝试在 htaccess 文件中设置一些规则,以打击指向我们网站的一些垃圾邮件传入链接。例如,一些垃圾邮件网站通过以下方式链接到我们的网站:

//www.oursite.com/buy-cheap-medication/
//www.oursite.com/get-medication-now/
//www.oursite.com/buy-medication-online/

等等。等等。这些传入链接由我们的服务器生成 404 状态,因为这些 URL 实际上并不存在并显示自定义 404 页面。我可以为每个错误的传入链接创建单独的规则,但是有成千上万的规则!您会注意到每个垃圾链接都包含“药物”一词。

是否可以将基于正则表达式的规则添加到 htaccess 文件中,以监视任何包含“药物”一词的 URL 并为其分配 410 状态?如有必要,我可以使用以下方法创建 410 页面:

ErrorDocument 410 /410.php

基于正则表达式的规则会将包含匹配词的 URL 转发到此自定义页面,状态为 410。我不确定确切的语法,但这是我迄今为止尝试过的:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^medication$ [L,R=410]
ErrorDocument 410 /410.php

【问题讨论】:

    标签: regex .htaccess url


    【解决方案1】:

    尝试:

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule medication - [NC,G]
    ErrorDocument 410 /410.php
    

    ! 用于 NOT(如果您在没有单词的情况下测试链接)
    ^ 用于开始,$ 用于结束。无需测试,因为该词在链接中的任何位置

    【讨论】:

    • 到目前为止,您的示例无法正常工作。我在 htacess 中添加了以下内容: # BEGIN Catchall RewriteCond %{REQUEST_FILENAME} !-f RewriteRule drug - [NC,L,R=410] # END Catchall 我省略了 RewriteEngine on as它已经在 htaccess 中早先声明过。
    • 如果还是不行,用edit添加你所有的htaccess
    • 好的,在 [NC,G] 修改后它现在可以正常工作了。剩下的问题是HTTPS。这是一个使用 HTTPS 重定向插件的 Wordpress 站点……它 301 将所有 HTTP 流量重定向到 HTTPS。如果传入的 URL 是 HTTP,那么它会将 URL 301 发送到 410.php,状态为 200OK。如果传入 URL 是 HTTPS,则不会发生重定向,状态为 410 Gone。知道 HTTP 流量如何返回 410 状态吗?
    • 我还应该注意,htaccess 中的 HTTPS 重定向脚本遵循您的脚本。当我将 HTTPS 重定向脚本放在你之前,它会 301s 对 HTTPS 的请求,然后在重定向后返回 410 状态。
    • 同样当 URL 为 HTTPS 时,URL 保持不变:'/whatever-mediaction/',页面呈现 410.php 的内容。当 URL 为 HTTP 时,在 301 重定向后,URL 从 '/whatever-medication/' 变为 410.php。
    猜你喜欢
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    相关资源
    最近更新 更多