网站首页是动态页面,去掉 index.php
如果你的网站首页地址是 https://www.yourdomain.com/index.php,你想让它变成 https://www.yourdomain.com。

核心原理
服务器接收到对根目录 的请求后,自动将其重写或内部转发到 index.php 文件。
操作步骤
修改 DedeCMS 后台设置(可选但推荐)
登录你的 DedeCMS 后台,进入【系统】->【系统基本参数】->【核心设置】。
找到 “首页文件名” 这一项,将其默认的 index.php 修改为 index.php(保持不变即可,重点是下面的服务器配置),这一步主要是为了确保后台生成规则时的一致性。
配置服务器进行 URL 重写
这是最关键的一步,你需要根据你的服务器类型来配置。

A. Apache 服务器
-
开启 Rewrite 模块 确保你的 Apache 服务器已经开启了
mod_rewrite模块,如果没开,需要修改httpd.conf文件,去掉下面这行前面的 :LoadModule rewrite_module modules/mod_rewrite.so
-
创建并配置
.htaccess文件 在你的网站根目录(即index.php所在的目录)下,创建一个名为.htaccess的文件,如果已存在,则编辑它。将以下代码完整地复制到
.htaccess文件中:<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On # 将根目录的请求重写到 index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>代码解释:
(图片来源网络,侵删)Options +FollowSymlinks:允许跟随符号链接。RewriteEngine On:开启重写引擎。RewriteCond %{REQUEST_FILENAME} !-f:如果请求的不是一个文件,则执行下面的规则。RewriteCond %{REQUEST_FILENAME} !-d:如果请求的不是一个目录,则执行下面的规则。RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]:将所有请求都重写到index.php,并保留原始的参数。
-
设置目录权限 确保
.htaccess文件所在目录的配置文件(如httpd.conf中的<Directory>指令)允许覆盖AllowOverride All。
B. Nginx 服务器
-
修改 Nginx 配置文件 找到你的网站配置文件,通常位于
/etc/nginx/sites-available/目录下(如yourdomain.com)。 -
添加或修改
location块 在server块中,确保有如下配置,特别是try_files这一行:server { listen 80; server_name www.yourdomain.com yourdomain.com; root /path/to/your/website; # 替换成你的网站根目录 # ... 其他配置 ... location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 根据你的PHP版本修改 } # ... 其他配置 ... }代码解释:
try_files $uri $uri/ /index.php?$query_string;:这是核心指令,它会依次尝试:- 访问用户请求的 URI(如
/about)。 - 如果是目录,访问目录下的默认文件(如
/about/)。 - 如果以上都找不到,最后将请求交给
index.php处理,并传递所有查询参数。
- 访问用户请求的 URI(如
-
重启 Nginx 服务 保存配置文件后,执行以下命令使配置生效:
sudo nginx -t sudo systemctl restart nginx
网站首页是静态HTML,去掉 index.html
如果你的网站开启了“生成HTML”,首页地址是 https://www.yourdomain.com/index.html,你想让它变成 https://www.yourdomain.com。
这种情况更简单,因为不需要复杂的重写规则,只需要一个简单的重定向(Redirect)即可。
操作步骤
修改 DedeCMS 后台设置(可选)
同样可以进入【系统】->【系统基本参数】->【核心设置】,将“首页文件名”改为 index.html,但这不是必须的,因为最终效果是访问不到它的。
配置服务器进行 301 重定向
这是最标准、最推荐的做法,告诉搜索引擎 index.html 页面已永久移动到根目录,有利于 SEO 权重传递。
A. Apache 服务器
在网站根目录的 .htaccess 文件中添加以下规则:
# 将 index.html 301重定向到根目录 Redirect 301 /index.html https://www.yourdomain.com/
或者,如果你想重定向所有以 index.html 结尾的页面(包括子目录):
# 将所有 index.html 301重定向到对应的目录根 RedirectMatch 301 ^(.*/)index\.html$ https://www.yourdomain.com$1
B. Nginx 服务器
在网站配置文件的 server 块中添加以下 return 指令:
server {
# ... 其他配置 ...
# 将 index.html 301重定向到根目录
location = /index.html {
return 301 https://www.yourdomain.com/;
}
# ... 其他配置 ...
}
或者,如果你想重定向所有以 index.html 结尾的页面:
server {
# ... 其他配置 ...
# 将所有 index.html 301重定向到对应的目录根
if ($request_filename ~* ^.*/index\.html$) {
return 301 https://www.yourdomain.com$request_uri;
}
# ... 其他配置 ...
}
总结与注意事项
- 区分场景:首先确定你的首页是动态(
index.php)还是静态(index.html),选择对应的方法。 - 首选方案:
- 去掉
index.php:使用 URL 重写,目的是让服务器“静默”地处理请求,用户浏览器地址栏不会变。 - 去掉
index.html:使用 301 重定向,目的是明确告诉搜索引擎页面已永久移动。
- 去掉
- 清除缓存:配置完成后,请务必清除浏览器缓存、CDN 缓存(如果使用了)以及 DedeCMS 的模板缓存,以确保能看到效果。
- 检查权限:确保你创建或修改的配置文件(如
.htaccess)有正确的读写权限。 - 测试:配置完成后,访问你的域名,看看是否能正常跳转或显示内容,如果出现 500 错误,通常是配置文件语法有问题,请检查日志并修正。
按照以上步骤操作,你应该就能成功去掉 DedeCMS 首页的 index 了。
