直接复制 .htaccess 文件内容
您可以直接将以下代码复制并保存为 .htaccess 文件。

(图片来源网络,侵删)
# 将 RewriteEngine 模式打开
RewriteEngine On
# 修改以下语句中的 /dedecms 为你的程序目录地址,如果程序放在根目录中,请将 /dedecms/ 修改为 /
# RewriteBase 后面是网站的根目录,/ 表示网站根目录,/blog/ 表示网站在 blog 目录下
# 如果你的网站在根目录,请使用 RewriteBase /
RewriteBase /
# Rewrite 系统规则请勿修改
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# -------------------------------------------------------------
# 以下是安全增强配置 (可选,但强烈推荐)
# -------------------------------------------------------------
# 禁止访问 .htaccess 文件
<Files .htaccess>
order allow,deny
deny from all
</Files>
# 禁止访问敏感文件和目录
<FilesMatch "^(\.(htaccess|htpasswd|git|svn)|README\.md|LICENSE\.txt)$">
Require all denied
</FilesMatch>
# 禁止列出目录内容
Options -Indexes
# 防止盗链 (请将 yourdomain.com 替换为您的域名)
# RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
# RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
# RewriteRule \.(jpg|jpeg|png|gif|bmp|swf|flv|mp3|wma|wav|zip|rar|7z)$ - [F,NC,L]
# 防止 PHP 文件在特定目录被执行 (uploads 目录)
# <Directory "/path/to/your/uploads">
# php_flag engine off
# </Directory>
# 注意:请将 /path/to/your/uploads 替换为您实际的 uploads 目录路径
.htaccess 文件配置详解
上面的 .htaccess 文件分为三个部分:核心URL重写规则、安全增强配置和注释掉的附加功能。
核心URL重写规则
这部分是 DedeCMS 实现伪静态(URL美化)所必需的。
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteEngine On: 开启 Apache 的 URL 重写引擎。RewriteBase /: 这是最需要根据你的实际情况修改的地方。- 如果你的 DedeCMS 程序安装在网站根目录(
public_html或www),那么保持 即可。 - 如果你的 DedeCMS 安装在子目录(
blog),那么这里需要修改为/blog/。
- 如果你的 DedeCMS 程序安装在网站根目录(
RewriteRule ^index\.php$ - [L]: 如果请求的是index.php文件,直接处理,不进行后续规则匹配。RewriteCond %{REQUEST_FILENAME} !-f: 判断请求的文件名是否不是一个真实存在的文件。RewriteCond %{REQUEST_FILENAME} !-d: 判断请求的目录名是否不是一个真实存在的目录。RewriteRule . /index.php [L]: 如果以上两个条件都满足(即请求的既不是文件也不是目录),就将所有请求都重写到网站的index.php文件,DedeCMS 的index.php会根据 URL 参数来解析并显示对应的页面。
安全增强配置 (强烈推荐)
这部分代码可以显著提升你的网站安全性。
-
禁止访问
.htaccess文件
(图片来源网络,侵删)<Files .htaccess> order allow,deny deny from all </Files>防止别人下载或查看你的
.htaccess配置文件。 -
禁止访问敏感文件和目录
<FilesMatch "^(\.(htaccess|htpasswd|git|svn)|README\.md|LICENSE\.txt)$"> Require all denied </FilesMatch>禁止访问
.git、.svn等版本控制目录,以及README.md、.htpasswd等敏感文件。 -
禁止列出目录内容
(图片来源网络,侵删)Options -Indexes
当一个目录下没有默认首页文件(如
index.html,index.php)时,服务器会列出该目录的所有文件,此配置可以防止这种情况,提高安全性。
注释掉的附加功能 (按需启用)
这些功能默认被注释掉了,你可以根据自己的需求进行修改和启用。
-
防止盗链
# RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC] # RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] # RewriteRule \.(jpg|jpeg|png|gif|bmp|swf|flv|mp3|wma|wav|zip|rar|7z)$ - [F,NC,L]- 作用:防止其他网站直接引用你网站的图片、文件等资源,从而节省你的服务器流量。
- 配置:将
yourdomain.com替换成你自己的域名。google.com是为了允许 Google 图片搜索,你可以根据需要添加或删除。
-
禁止在特定目录执行 PHP
# <Directory "/path/to/your/uploads"> # php_flag engine off # </Directory>
- 作用:这是一个非常重要的安全措施。
uploads、data等目录通常是用来上传文件的,黑客可能会尝试上传恶意 PHP 脚本,通过在此目录中禁用 PHP 执行,即使黑客上传了脚本也无法在服务器上运行。 - 配置:将
/path/to/your/uploads替换为你网站的uploads目录在服务器上的绝对路径(/home/username/public_html/uploads)。注意:此功能需要在httpd.conf中配置AllowOverride Options或AllowOverride All才能生效,如果无法使用,可以咨询你的主机商。
- 作用:这是一个非常重要的安全措施。
如何使用 .htaccess 文件
-
创建文件: 在你的电脑上新建一个文本文档,将上面提供的完整代码复制进去。
-
修改配置:
- 重点检查
RewriteBase /这一行,确保它符合你的网站目录结构。 - 根据需要,启用或修改安全增强配置部分。
- 重点检查
-
保存文件:
- 点击“文件” -> “另存为”。
- 在“保存类型”中,选择“所有文件 (*.*)”。
- 在“文件名”中,输入
.htaccess(注意前面的点 )。 - 将文件保存到你的 DedeCMS 网站的根目录下(即与
index.php,dede文件夹同级的目录)。
-
上传文件: 使用 FTP 工具(如 FileZilla)或你的主机商提供的文件管理器,将
.htaccess文件上传到网站的根目录。 -
检查和测试:
- 检查 Apache 模块:确保你的 Apache 服务器已经开启了
mod_rewrite模块,绝大多数虚拟主机都已开启,如果是自己配置的服务器,需要检查httpd.conf文件中是否有LoadModule rewrite_module modules/mod_rewrite.so并且没有被注释掉。 - 测试伪静态:上传后,访问你的网站栏目页、文章页等,看 URL 是否已经变成伪静态格式(如
/a/2025/1234.html),如果页面打不开或出现 404 错误,通常是RewriteBase设置错误,或者mod_rewrite模块未启用。
- 检查 Apache 模块:确保你的 Apache 服务器已经开启了
常见问题排查
-
问题:开启
.htaccess后,网站首页正常,但内页全部 404。- 原因:最常见的原因是
RewriteBase路径设置错误,请再次确认你的 DedeCMS 是在根目录还是子目录。 - 原因:Apache 的
AllowOverride指令没有设置为All,这需要联系主机商或在服务器配置中修改。
- 原因:最常见的原因是
-
问题:下载的
.htaccess文件内容为乱码。- 原因:保存文件时,编码格式选择了 UTF-8 with BOM,这会导致 Apache 无法识别,请确保保存为 ANSI 编码或 UTF-8 without BOM 编码,在 Notepad++ 中,可以通过“编码”菜单来转换。
希望这份详细的指南能帮助到你!
