文档首页> 云虚拟主机类> 伪静态设置与常见问题自助排查

伪静态设置与常见问题自助排查

发布时间:2026-11-02 18:06       

一、伪静态是什么?我需要设置吗?

伪静态可以让网站 URL 变得更简洁、美观,例如:

动态地址:https://www.xxx.com/index.php?m=article&id=1

伪静态后:https://www.xxx.com/article/1.html

以下情况需要设置伪静态:

  • 使用 EyouCMS、WordPress、ThinkPHP、Discuz 等程序
  • 后台有“固定链接”“URL模式”“SEO伪静态”等选项
  • 希望搜索引擎更容易收录

以下情况不需要:

  • 纯 HTML 静态网站
  • 程序后台未开启伪静态功能

二、我司主机伪静态设置方法

我司虚拟主机默认已开启 .htaccess 支持,无需在面板中额外设置。

操作步骤

  1. 在本文档下方找到你使用的程序,复制对应的规则代码。
  2. 新建文件,文件名:.htaccess(开头有一个英文句点,无后缀名)
  3. 使用 FTP 软件上传到网站根目录(通常是 wwwroot 或 public_html)
常见错误:
1. 文件名写成 htaccess.txt 或 htaccess → 规则无效
2. 上传到子目录而非根目录 → 仅对该子目录生效
3. Windows 记事本保存请选择编码:UTF-8 无 BOM

程序后台开启伪静态

  • EyouCMS:后台 → 系统设置 → URL模式 → 选择“伪静态” → 保存并清除缓存
  • WordPress:设置 → 固定链接 → 选择“文章名”或自定义结构 → 保存
  • ThinkPHP:确保 config.php 中 URL 模式为 2(PATH_INFO)
  • Discuz:后台 → 全局 → SEO设置 → 开启伪静态 → 提交

设置完成后访问网站内页(分类页、文章页)测试是否正常打开。

三、各程序伪静态规则包

1. EyouCMS

<IfModule mod_rewrite.c>
    Options +FollowSymlinks -Multiviews
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

2. WordPress

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

3. ThinkPHP 5 / 6(含 FastAdmin、EasyAdmin)

入口在根目录:

<IfModule mod_rewrite.c>
    Options +FollowSymlinks -Multiviews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

入口在 public/ 子目录:将规则放到 public/.htaccess,内容相同。

4. Discuz! X3.x

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{QUERY_STRING} ^(.)$
    RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1
    RewriteCond %{QUERY_STRING} ^(.)$
    RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ portal.php?mod=view&aid=$1&page=$2&%1
    RewriteCond %{QUERY_STRING} ^(.)$
    RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1
    RewriteCond %{QUERY_STRING} ^(.)$
    RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page%3D$3&page=$2&%1
    RewriteCond %{QUERY_STRING} ^(.)$
    RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2&%1
    RewriteCond %{QUERY_STRING} ^(.)$
    RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2&%1
</IfModule>

5. 通用安全增强段(建议添加到所有规则末尾)

# 禁止访问敏感文件
<FilesMatch "\.(sql|sqlite|env|json|lock|git|svn|idea|log)$">
    Order allow,deny
    Deny from all
</FilesMatch>

# 禁止上传目录执行脚本
<DirectoryMatch "/(uploads|data|template)/">
    <FilesMatch "\.(php|php3|php4|php5|pht|phtml|asp|aspx|jsp|exe)$">
        Order allow,deny
        Deny from all
    </FilesMatch>
</DirectoryMatch>

# 禁止访问核心目录
<IfModule mod_rewrite.c>
    RewriteRule ^(application|runtime|vendor|data|template)/ - [F,L]
</IfModule>

四、二级目录安装怎么办?

例如网站装在 https://www.xxx.com/sub/,规则示例(以 EyouCMS 为例):

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /sub/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

将 sub 替换为你的实际子目录名。

五、自助排查话术(用户报障时可直接回复)

场景1:开启伪静态后网站500错误

请检查:

  • .htaccess 文件名是否正确(开头有英文句点,无 .txt 后缀)
  • 规则是否完整复制,有无多余空格或中文符号
  • 暂时重命名 .htaccess 为 htaccess.bak,看是否恢复正常
  • 若恢复,说明规则有误,请对照本文档重新粘贴

场景2:首页正常,内页404

  • 程序后台是否已开启伪静态(如 EyouCMS 的 URL 模式)
  • 是否清除了程序缓存
  • 确认主机支持 PATH_INFO(可提交工单确认)

场景3:图片、CSS、JS加载失败

  • 文件是否真实存在于服务器
  • 浏览器按F12查看控制台报错路径
  • 规则中的 !-f 和 !-d 条件是否正常(不要删除这两行)

场景4:修改后无任何变化

  • 强制刷新:Ctrl + F5
  • 清除浏览器缓存或使用无痕模式
  • 清除程序后台缓存
  • 确认 .htaccess 已上传到网站根目录,而非子目录

场景5:后台无法登录或跳转错误

  • 临时重命名 .htaccess 排除规则影响
  • 检查程序配置文件中是否硬编码了URL模式
  • 恢复默认伪静态设置后逐步排查

六、附加优化:为什么网站打开慢?检查数据库地址

如果你发现:网站首页加载慢、切换栏目有明显停顿、后台操作卡顿,很可能是数据库连接地址造成的。

解决方法:编辑程序配置文件,将数据库主机从 localhost 改为 127.0.0.1:

  • EyouCMS:/application/database.php → 'hostname' => '127.0.0.1'
  • WordPress:/wp-config.php → define('DB_HOST', '127.0.0.1');
  • ThinkPHP:/config/database.php 或 .env → 'hostname' => '127.0.0.1'

原因:localhost 在Linux下可能触发IPv6解析或Socket路径问题,导致连接延迟;127.0.0.1强制走TCP/IP,速度更稳定。

七、常见问题FAQ

Q:我司用户面板里没有伪静态设置页面,怎么办?
A:我司虚拟主机通过 .htaccess 文件实现伪静态,无需面板设置。只需将规则保存为 .htaccess 上传到根目录即可。

Q:我可以自己写伪静态规则吗?
A:可以,但需使用Apache兼容语法。不建议直接复制Nginx规则,我司主机不支持。

Q:规则冲突怎么办?
A:一个站点只能有一个 .htaccess 文件。如需多种规则,请合并到同一个文件中,或联系技术支持。

Q:修改后需要重启服务器吗?
A:不需要。保存 .htaccess 后立即生效,只需清除程序缓存。


如以上步骤无法解决,请提交工单,并提供:
1. 网站程序名称及版本
2. 报错截图
3. 已尝试的操作
我们将尽快协助处理。