wordpress放到服务器上只显示首页?

WordPress 部署到服务器后只显示首页,其他页面(如文章、分类、标签、自定义页面)404 或无法访问,这是非常常见的问题,通常不是 WordPress 安装失败,而是固定链接(Permalink)重写规则未正确配置导致的。以下是系统性排查和解决方案:


✅ 一、常见原因与对应解决方法

🔹 1. Apache:mod_rewrite 未启用 或 .htaccess 未生效

  • ✅ 检查 mod_rewrite 是否启用:

    # Ubuntu/Debian
    sudo a2enmod rewrite
    sudo systemctl restart apache2
    # CentOS/RHEL
    sudo sed -i 's/AllowOverride None/AllowOverride All/g' /etc/httpd/conf/httpd.conf
    sudo systemctl restart httpd
  • ✅ 确保 WordPress 根目录下有可读写的 .htaccess 文件(权限建议 644),内容类似:

    # BEGIN 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>
    # END WordPress

    ⚠️ 若 .htaccess 不存在或为空,请在 WordPress 后台 →「设置」→「固定链接」→ 任意点击「保存更改」,WordPress 会自动尝试生成(需目录可写)。

  • ✅ 检查 Apache 虚拟主机配置是否允许 .htaccess 覆盖:

    <Directory "/var/www/your-wordpress-site">
      AllowOverride All   # ❗必须是 All,不能是 None 或 FileInfo
      Require all granted
    </Directory>

🔹 2. Nginx:缺少重写规则(最常见于 Nginx 用户)

Nginx 不支持 .htaccess,必须手动在 server 块中添加 WordPress 伪静态规则:

location / {
    try_files $uri $uri/ /index.php?$args;
}

# 可选:保护敏感文件
location ~ .(php|htaccess|ini|log|sh|sql|bak)$ {
    deny all;
}

✅ 修改后重载 Nginx:

sudo nginx -t && sudo systemctl reload nginx

💡 提示:如果你用宝塔、AMH、LNMP 等面板,请在网站设置中开启「伪静态」并选择「WordPress」模板。


🔹 3. 固定链接结构设置错误

  • 登录 WordPress 后台 →「设置」→「固定链接」
  • ✅ 切换为 “朴素”?p=123)→ 测试其他页面是否能打开?
    • ✅ 如果能打开 → 说明是重写问题(回到上面检查服务器配置)
    • ❌ 如果仍 404 → 说明有更底层问题(见下方)

🔹 4. 其他可能原因(进阶排查)

问题 检查方式 解决方案
WordPress 地址(URL)错误 后台 → 设置 → 通用 → 「WordPress 地址」和「站点地址」是否为你的真实域名(如 https://example.com),不能是 localhost 或 127.0.0.1 ✅ 改为正确 URL;若无法登录后台,可临时在 wp-config.php 中强制定义:
define('WP_HOME','https://example.com');
define('WP_SITEURL','https://example.com');
主题/插件冲突 后台 → 外观 → 主题 → 切换为默认主题(如 Twenty Twenty-Four);插件全部禁用 ✅ 排查是否某插件(尤其 SEO、缓存、安全类)重写了路由
缓存干扰 浏览器缓存、CDN(Cloudflare)、对象缓存(Redis/Memcached)、插件缓存(WP Super Cache) ✅ 清除所有缓存;临时关闭 CDN 和缓存插件测试
HTTPS/SSL 重定向异常 访问 http:// 正常但 https:// 404?或混合内容报错? ✅ 在 wp-config.php 添加:
$_SERVER['HTTPS'] = 'on';(仅限强制 HTTPS 环境)
或使用插件「Really Simple SSL」自动修复

✅ 二、快速诊断流程(推荐按顺序执行)

  1. ✅ 切换固定链接为「朴素」→ 测试 /wp-admin/post.php?post=1&action=edit 是否能打开文章编辑页
  2. ✅ 切换回「文章名」→ 若 404 → 立即检查服务器重写配置(Apache/Nginx)
  3. ✅ 查看浏览器开发者工具(F12)→ Network 标签 → 点击内页,看返回状态码(404?500?301?)
  4. ✅ 查看服务器错误日志:
    • Apache:/var/log/apache2/error.log
    • Nginx:/var/log/nginx/error.log
      (搜索 rewrite, 404, Permission denied, No input file specified
  5. ✅ 检查 wp-config.php 中是否有硬编码的 siteurlhome(可能覆盖后台设置)

📌 补充:如果你用的是宝塔面板(国内常用)

  • 进入网站 →「设置」→「伪静态」→ 选择「WordPress」→ 保存
  • 确保「SSL」→「强制 HTTPS」已按需开启(避免 HTTP/HTTPS 混合)
  • 「防火墙」→ 关闭(测试时临时关闭,排除拦截)

如你提供以下信息,我可以帮你精准定位:

  • 服务器环境(Apache / Nginx / 其他?版本?)
  • 是否用宝塔/AMH/Oneinstack 等面板?
  • 访问内页时浏览器显示什么(404?空白?跳转首页?)
  • wp-admin 是否能正常登录?
  • 你当前的固定链接设置是什么?

欢迎贴出截图或日志片段,我来帮你逐行分析 👇

需要我为你生成 Apache/Nginx 完整配置示例一键修复脚本,也随时告诉我! 🛠️