首页 > 解决方案 > Wordpress 404 在除主页外的所有页面上都找不到

问题描述

除了我的wordpress主页外,我在所有页面上都找不到404。

它没有在预生产服务器上犯这个错误,而是在生产中。我使用复制器的插件将站点从 preprod 迁移到 prod。

生产服务器是我自己安装的vps ovh。它使用letsencrypt for https。它使用 ufw 防火墙,并且允许使用 openSSH 和 WWW Full。我的 apache 服务器没有检测到 sudo systemctl status apache2 的错误。

我一直在关注它的一些主题,比如更改永久链接设置,当我检查“默认”并保存时,我在其他页面上没有收到错误 404,它可以工作。我注意到在这种情况下,我的 .htaccess 文件的内容被删除了。当我重置我的默认永久链接设置时,我再次收到错误并且我无法再访问我的页面(主页除外)。

在 wordpress 的常规设置中,wordpress 的网址是https://www.abysolutions.com,网站的网址是https://www.abysolutions.com。在 wp_options 表中, siteurl 和 home 的值为https://www.abysolutions.com

在 ovh 区域 dns 中,我的域 abysolutions.com 有以下条目:A 146.59.234.157。但是, www.abysolutions.com没有 A 条目。

以下是一些配置文件:

/etc/www/apache2/sites-available/abysolutions.conf :

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName abysolutions.com
    ServerAlias www.abysolutions.com
    DocumentRoot /var/www/abysolutions

    <Directory /var/www/abysolutions>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/abysolutions-error.log
    CustomLog ${APACHE_LOG_DIR}/abysolutions-access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =abysolutions.com [OR]
RewriteCond %{SERVER_NAME} =www.abysolutions.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

该文件通过 sudo a2ensite abysolutions.conf 启用。我禁用了默认文件 sudo a2dissite 000-default.conf。

我在 /var/www/abysolutions 上的 .htaccess :(当我的永久设置启用时)

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

我做了 sudo chown -R www-data:www-data /var/www/abysolutions 和 sudo chmod -R 755 。

我用 sudo systemctl reload apache2 重新启动了服务器,并用 sudo a2enmod rewrite 激活了重写模块。

我通过以下链接安装了 wordpress 所需的所有 php 扩展:https ://wordpress.org/support/topic/which-php-extensions-are-needed-to-run-a-fully-operational-wordpress-site/

但它仍然不起作用......

这不是我第一次安装 vps 并在其上放置 wordpress,而且我总是执行相同的步骤。然后由于某种原因它卡住了。我在以前的安装中看到的唯一显着区别是,当我使用 Duplicator 迁移站点时,它在我以前的安装中为我提供了https://www.example.com而不是https://example.com。我不明白为什么我的网址出现在 www.

编辑 :

在网站的健康方面,我注意到 2 个严重错误:

检测到一个活动的 PHP 会话: 一个 PHP 会话是由 session_start() 函数调用创建的。这会干扰 REST API 和环回请求。在发出任何 HTTP 请求之前,应由 session_write_close() 关闭会话。

您的站点无法完成关闭请求: 循环请求用于启动预定事件,并由主题和扩展编辑器检查代码的稳定性。

您站点上的环回请求失败,这意味着依赖这些请求的功能当前无法正常工作。错误:cURL 错误 28:操作在 10001 毫秒后超时,收到 0 个字节(http_request_failed)

在推荐的改进中:

REST API 遇到意外结果: REST API 是 WordPress 或其他应用程序与服务器通信的一种方式。一个示例是编辑器屏幕,用于显示和保存您的出版物。

对 REST API 的调用返回以下意外结果:(404) 404 Not Found Not Found

在此服务器上找不到请求的 URL。

Apache/2.4.38 (Debian) 服务器位于 www.abysolutions.com 端口 443

后台更新可能无法正常工作: 无法确认 wp_version_check() 过滤器是否可用。

编辑 2:

因此,通过将我的 .htaccess 与我的预生产服务器进行比较,我注意到 SimpleSSL 插件添加的一些规则丢失了。我还注意到在我的 /etc/apache2/sites-available/abysolutions-le-ssl.conf 文件中,缺少规则。

我认为这是纠正我错误的最后一个解决方案。再见!

标签: phpwordpressapache.htaccess

解决方案


访问您的网站:

https://domain.tld/wp-admin/options-permalink.php

单击保存。

如果它不起作用,请将 URL 设置更改为普通,单击保存。然后,如果它有效,请根据需要更改设置。


推荐阅读