如何在没有404的情况下将错误/恶意软件流量重定向到主页面

时间:2017-11-03 08:51:25

标签: php security redirect prestashop http-status-code-301

我正在运行Prestashop网站(从错误的Joomla移动)并且有很多可疑/恶意/恶意软件尝试检查我的页面安全性 - >页面未找到统计页面。有很多Joomla和Wordpress文件/目录尝试。

我有像

这样的手动重定向器
<?php
    $redir_maps = array(
        '/administrator' => '/',
        '/wp-admin' => '/',
    );

    if(in_array(@$_SERVER['REQUEST_URI'], array_keys($redir_maps))){
        header("HTTP/1.1 301 Moved Permanently"); 
        header("Location: ".$redir_maps[@$_SERVER['REQUEST_URI']]);
        exit;
    }
?>

它的工作非常好! 但是如何扩展它以捕获所有变量

/index.php?option=com_的 ???某种正则表达式?(Joomla Component) 防止这种链接并将其重定向到/:

/index.php?option=com_jce&task=plugin&plugin=imgmanager&file=imgmanager&method=form&cid=20&6bc427c8a7981f4fe1f5ac65c1246b5f=cf6dd3cf1923c950586d0dd595c8e20b

2 个答案:

答案 0 :(得分:0)

您没有使用SEF链接?那会损害你在搜索引擎中的排名。您当前的重定向脚本无法捕获所有访问管理页面的尝试 - 例如in_array()赢得了匹配/administrator/index.php,因为匹配必须准确($_SERVER['REQUEST_URI']返回路径,查询和片段。)

您可以使用JURI::getQuery()获取选项查询,然后只需测试它是否与您网站上的某个组件匹配即可。或者在您.htaccess中使用正则表达式,如果您正在使用Apache,它会在您的系统上使用较少的资源通过网络服务器执行此操作,因此恶意方不会耗尽您的资源。

答案 1 :(得分:0)

将此添加到.htaccess,在#~~开始之前~~不要删除此评论

RewriteEngine on 
RewriteRule ^wp-admin/.+$ index.php [L,R=301]
RewriteRule ^administrator/.+$ index.php [L,R=301]
RewriteRule ^.+\?.*option=com_.+$ index.php [L,R=301]