使用DedeCMS后台自带的“IP禁止访问”功能(最推荐,最简单)
这是最直接、最安全的方法,因为它不需要修改任何核心文件,且DedeCMS已经内置了此功能。

适用场景: 需要禁止少量、固定的IP地址访问。
操作步骤:
- 登录后台: 使用你的管理员账号登录DedeCMS网站后台。
- 进入系统设置: 在左侧菜单栏中,找到并点击 【系统】 -> 【系统基本参数】。
- 找到IP设置项: 在“系统基本参数”页面中,点击 【核心设置】 选项卡。
- 配置IP列表: 在页面中找到 【禁止IP访问】 这一项,在后面的输入框中,输入你想要禁止的IP地址。
- 格式: 每个IP地址用英文逗号 隔开。
- 示例: 如果你想要禁止
168.1.100和168.1.101这两个IP,你应该输入:168.1.100,192.168.1.101 - 支持通配符: 你也可以使用 作为通配符来禁止一个IP段。
- 示例(禁止IP段): 禁止
168.1.*这个网段的所有IP,可以输入:168.1.*
- 保存设置: 在页面底部点击 【保存】 按钮。
工作原理: 当有用户访问你的网站时,DedeCMS的核心程序会首先检查这个用户的IP是否在你设置的“禁止IP访问”列表中,如果在,系统会直接拒绝访问,并可能显示一个“禁止访问”的提示页面。
优点:

- 操作简单: 无需代码知识,纯后台操作。
- 安全稳定: 不涉及修改核心文件,升级系统时不会被覆盖。
- 即时生效: 保存后立即生效,无需重启服务。
缺点:
- 功能有限: 不支持复杂的规则(如禁止某个时间段内某个IP的访问)。
修改 .htaccess 文件(适用于Apache服务器)
如果你的网站服务器是Apache,这是非常高效和常用的方法。.htaccess 文件是Apache服务器的配置文件,可以用来控制网站的访问权限。
适用场景: 服务器为Apache,需要禁止IP或IP段,且希望服务器层面直接拦截。
操作步骤:

-
找到文件: 通过FTP或文件管理器,找到你的网站根目录下的
.htaccess文件,如果不存在,可以新建一个。 -
添加代码: 在
.htaccess文件中添加以下代码,建议添加在文件的开头位置。禁止单个IP:
<Limit GET POST> order allow,deny deny from 192.168.1.100 allow from all </Limit>禁止多个IP:
<Limit GET POST> order allow,deny deny from 192.168.1.100 deny from 192.168.1.101 allow from all </Limit>*禁止一个IP段(192.168.1.):**
<Limit GET POST> order allow,deny deny from 192.168.1. allow from all </Limit> -
保存文件: 将修改后的
.htaccess文件重新上传到服务器并覆盖原文件。
工作原理:
Apache服务器在处理请求前,会先读取并执行.htaccess文件中的指令。deny from 指令会直接拒绝来自指定IP的请求,根本不会将请求传递给DedeCMS程序处理,效率更高。
优点:
- 效率高: 在服务器层面拦截,节省服务器资源。
- 功能灵活: 可以配合其他Apache指令实现更复杂的控制。
- 不影响程序: 与DedeCMS程序本身无关。
缺点:
- 仅限Apache: Nginx或IIS服务器不适用。
- 文件误操作风险: 错误的
.htaccess配置可能导致整个网站无法访问。
修改PHP核心文件(适用于所有服务器,但需谨慎)
这是一种更底层的方法,通过在DedeCMS的核心入口文件中添加IP判断逻辑来实现,这种方法功能最强大,但也最危险。
适用场景: 服务器非Apache,或者需要非常复杂的IP访问控制逻辑,且你熟悉PHP代码修改。
操作步骤:
-
找到文件: 通过FTP或文件管理器,找到网站根目录下的
index.php文件,这是DedeCMS的默认首页入口文件。 -
添加判断代码: 在
<?php这行代码的正下方,添加以下PHP代码。<?php // 在这里添加以下代码 $banip_arr = array( '192.168.1.100', '192.168.1.101', '192.168.1.*' // 支持通配符 ); $userip = GetIP(); // 获取访客IP,DedeCMS自带函数 $userip_pattern = str_replace('*', '\d+', $userip); // 将通配符*转换为正则表达式\d+ $userip_pattern = str_replace('.', '\.', $userip_pattern); foreach ($banip_arr as $banip) { if ($banip == $userip || preg_match("/^{$banip_pattern}$/", $userip)) { // 如果IP在禁止列表中,则执行以下操作 // 可以是直接显示一段文字,然后退出 // header("Content-Type: text/html; charset=utf-8"); // die('您的IP地址 (' . $userip . ') 被禁止访问!'); // 或者跳转到指定页面 header("Location: https://www.example.com/banned.html"); exit(); } } // ... 后面是DedeCMS原有的代码 -
保存文件: 保存
index.php文件。
代码解释:
$banip_arr: 这是一个数组,你将要禁止的IP地址或IP段(使用)放进去。GetIP(): 这是DedeCMS内置的一个函数,用于获取访问者的真实IP。preg_match(): 使用正则表达式来匹配IP,支持通配符,可以判断一个IP是否属于某个IP段。die()或header("Location: ..."): 当发现IP被禁止时,可以选择直接中断程序并显示提示信息,或者将用户重定向到一个“被禁止”的页面。
优点:
- 通用性强: 不依赖服务器类型,任何PHP环境都适用。
- 功能强大: 可以结合PHP实现非常复杂的判断逻辑。
缺点:
- 高风险: 直接修改核心文件,一旦代码出错,可能导致整个网站瘫痪。
- 升级麻烦: 每次升级DedeCMS时,都需要重新修改这个文件,修改内容可能会被覆盖。
- 效率较低: 每次访问网站都会执行这段PHP代码进行判断。
总结与建议
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 后台设置 | 简单、安全、即时生效 | 功能有限 | ★★★★★ (首选) |
.htaccess |
效率高、服务器层面拦截 | 仅限Apache服务器 | ★★★★☆ (Apache用户首选) |
| 修改PHP | 通用、功能强大 | 高风险、升级麻烦 | ★★☆☆☆ (不推荐,除非必要) |
给你的建议:
- 如果你只是想禁止几个捣乱的IP,请毫不犹豫地使用 方法一,这是最标准、最安全的选择。
- 如果你的服务器是Apache,并且对性能有要求,可以使用 方法二。
- 除非你明确知道自己需要更复杂的功能,并且有信心处理好代码修改和后续升级问题,否则不要轻易使用方法三。
