结论:WordPress放到服务器上只显示首页,通常是由于固定链接设置、伪静态规则配置或文件权限问题导致的。
如果你将 WordPress 程序上传到服务器后,发现除了首页可以正常访问,其他页面(如文章页、分类页、后台登录页)都提示 404 错误或无法打开,那么很可能不是程序本身的问题,而是 固定链接设置不当 或者 服务器环境未正确配置伪静态规则 所致。
以下是常见原因及解决方法:
常见原因分析
-
固定链接未重置
WordPress 默认使用“朴素”形式的固定链接(例如
?p=123),当你在本地开发时可能设置了自定义结构(如/文章标题.html)。上传到服务器后,如果没有更新固定链接设置,就会导致页面无法访问。 -
Apache/Nginx 未启用伪静态
如果你使用的是 Apache 服务器,需要确认是否启用了
mod_rewrite模块,并且.htaccess文件存在并有正确的写入权限。如果是 Nginx 服务器,则必须手动添加 WordPress 的伪静态规则,否则 URL 重写不会生效。
-
.htaccess 文件缺失或权限不足
WordPress 在更改固定链接时会尝试自动写入
.htaccess文件。如果该文件不存在或者没有写入权限,URL 重写功能就无法启用。 -
服务器配置文件路径错误
有时服务器的根目录指向不正确,比如 WordPress 安装在子目录中但服务器配置仍指向根目录,也会导致页面访问异常。
解决方案步骤
-
进入 WordPress 后台 → 设置 → 固定链接
- 即使你已经选择了某种格式,也建议重新选择一次(例如选择“默认”,保存后再改回“文章名”),强制刷新链接结构。
- 这样 WordPress 会尝试重新生成
.htaccess文件内容。
-
检查 .htaccess 文件是否存在
- 如果没有这个文件,请手动创建一个,并确保其内容如下:
# 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
- 如果没有这个文件,请手动创建一个,并确保其内容如下:
-
Apache 服务器需启用 mod_rewrite 并允许 .htaccess 覆盖
- 修改 Apache 配置文件(如
httpd.conf或站点配置文件),找到对应<Directory>区域,确保包含以下内容:AllowOverride All - 然后重启 Apache 服务。
- 修改 Apache 配置文件(如
-
Nginx 用户需添加伪静态规则
- 在 Nginx 的站点配置文件中添加如下代码:
location / { try_files $uri $uri/ /index.php?$args; } -
或者更完整的 WordPress 规则:
location / { index index.php index.html index.htm; try_files $uri $uri/ /index.php?$args; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php-fpm.sock; } - 修改后重启 Nginx。
- 在 Nginx 的站点配置文件中添加如下代码:
-
检查文件权限
- WordPress 根目录及其子目录和文件的权限应设置为:
- 目录:755
- 文件:644
- 特别注意
.htaccess和wp-config.php文件的权限不要过高,避免安全隐患。
- WordPress 根目录及其子目录和文件的权限应设置为:
总结与建议
核心观点一:WordPress 只显示首页的根本原因是 URL 重写机制未能正常工作。
核心观点二:优先检查固定链接设置与服务器伪静态配置,是解决此问题的关键。
核心观点三:不同服务器(Apache/Nginx)需分别配置对应的 URL 重写规则。
遇到此类问题时,不必急于重新安装 WordPress,先从服务器配置和固定链接入手排查,往往能快速定位并解决问题。此外,部署网站前建议记录好本地开发环境的设置,以便迁移时快速还原配置,减少兼容性问题的发生。
云知道CLOUD