一、前言
不同服务器、虚拟空间所运行的 PHP 环境各不相同,目前主流的 Web 服务器主要分为 Nginx、Apache、IIS 及其他类型。下面分别介绍在各类环境下如何去掉 URL 中的 index.php 字符,实现伪静态访问。
注意事项:配置完成后,请记得在管理后台清除缓存;部分 ECS 服务器可能还需要重启 Nginx 等服务才能生效。
二、IIS 服务器
IIS 环境下的配置方法,可参考易优官方问答文档:
三、Nginx 服务器
1. 安装在网站根目录
在原有的 Nginx 重写文件中新增以下代码:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
2. 安装在二级目录
如果易优安装在二级目录下,请使用以下配置(将 二级目录名 替换为实际目录名):
location /二级目录名/ {
if (!-e $request_filename) {
rewrite ^/二级目录名/(.*)$ /二级目录名/index.php?s=/$1 last;
break;
}
}
3. 根目录与二级目录同时安装
类似阿里云空间这类场景,同一虚拟主机的根目录和二级目录都安装了易优,则需同时配置两段规则:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
location /二级目录名/ {
if (!-e $request_filename) {
rewrite ^/二级目录名/(.*)$ /二级目录名/index.php?s=/$1 last;
break;
}
}
四、Apache 服务器
Apache 环境默认会自动隐藏 index.php 入口,无需额外配置。
如果发现没有生效,请依次排查以下步骤:
1. 检查根目录 .htaccess 文件
确认根目录下的 .htaccess 文件是否包含以下核心代码:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
</IfModule>
2. 尝试调整重写规则
如果仍未隐藏,可尝试将 RewriteRule 改为以下写法(加问号):
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
或者修改为:
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
3. 检查 URL 重写模块并重启服务
若以上方法仍无效,请检查 Apache 是否开启了 URL 重写模块 rewrite_module,确认开启后重启服务即可生效。

