EyouCms 如何去掉 URL 中的 index.php 入口文件

概述

不同服务器、虚拟主机环境配置方式各不相同,本文分别针对 Nginx、Apache、IIS 环境提供伪静态配置,实现隐藏 URL 里的index.php入口。

配置完成后务必登录网站后台清除系统缓存;ECS 云服务器环境需要重载或重启 Web 服务,让重写规则生效。

IIS 服务器

  1. 查看网站根目录是否存在web.config配置文件;
  2. 已有文件:将下面的重写规则片段,粘贴到 <system.webServer></system.webServer> 标签中间;
  3. 无文件:直接复制全部代码,保存为web.config,上传至网站根目录。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="OrgPage" stopProcessing="true">
                    <match url="^(.*)$" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{HTTP_HOST}" pattern="^(.*)$" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

上传完成后,后台清除缓存,访问网站首页验证效果。



h5.png


Nginx 服务器

① 网站部署在站点根目录

将如下规则添加到站点 nginx 配置中:

location / {
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php?s=/$1 last;
        break;
    }
}

② 网站部署在二级目录

location / {
    if (!-e $request_filename) {
        rewrite ^/([^\/]+)/(.*)$ /$1/index.php?s=/$2 last;
        break;
    }
}

③ 同一虚拟主机,根目录、二级目录均安装 EyouCMS

注意:不要重复写两个location / {},合并到同一个配置块内

location / {
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php?s=/$1 last;
        break;
    }
    if (!-e $request_filename) {
        rewrite ^/([^\/]+)/(.*)$ /$1/index.php?s=/$2 last;
        break;
    }
}

配置保存后重载 Nginx 服务。

Apache 服务器

Apache 环境默认可自动隐藏index.php入口;如果 URL 仍显示 index.php,请检查根目录.htaccess文件。

.htaccess完整参考代码:

<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on

# http强制跳转https可按需开启
# RewriteCond %{HTTPS} !=on
# RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
</IfModule>

异常排查

配置后入口文件依旧无法隐藏,依次尝试修改规则最后一行,二选一替换测试:

RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

如修改后仍然无效:确认 Apache 已开启rewrite_module重写模块,修改配置后重启 Apache 服务。

配置完成验证

  1. 服务器配置规则保存、重载服务;
  2. 登录 EyouCMS 后台,清除系统缓存;
  3. 浏览器访问网站首页,确认 URL 不再携带index.php
  4. 如浏览器缓存干扰,可清除浏览器缓存或使用无痕模式访问。

其他类型 Web 服务器,请自行搜索对应环境的 URL 重写配置方案。

分享: