WordPress 给我的 404 页面找不到除主页以外的所有页面

Posted

技术标签:

【中文标题】WordPress 给我的 404 页面找不到除主页以外的所有页面【英文标题】:WordPress is giving me 404 page not found for all pages except the homepage 【发布时间】:2011-07-08 03:22:11 【问题描述】:

突然间,我访问了我的 WordPress 网站,所有页面都给了我一个 404 页面未找到页面。我假设问题出在永久链接结构上,我可以发誓我没有碰过它。永久链接设置为“月份和名称”。

我在网上研究过类似的这个问题实例,其中很多都与.htaccess 文件有关?我试图找到,但我不能。也许它以某种方式被删除了?它应该位于哪里。

任何建议都会有所帮助

当然我可以看到隐藏文件。

【问题讨论】:

建议您也可以在wordpress.stackexchange.com 上提问。 您也可以从数据库级别更改永久链接:sforsuresh.in/wordpress-update-permalink-database 【参考方案1】:

转到您的 WordPress 仪表板,向下滚动到设置,选择永久链接,

在出现的自定义设置中,转到自定义结构并将文本字段中的文本替换为

/index.php/%year%/%monthnum%/%day%/%postname%/

然后保存更改

【讨论】:

【参考方案2】:

经过漫长的 2 天后, 解决方案是将options +FollowSymLinks 添加到我的.htaccess 文件的顶部。

【讨论】:

【参考方案3】:

基本上.htaccess文件应该存在,httpd.conf应该是正确的。

就我而言,我在以下部分更改了文件 /etc/apache2/apache2.conf:

<Directory "/var/www/html">

换行是:

AllowOverride None

AllowOverride All

然后重启网络服务器

systemctl restart apache2

【讨论】:

谢谢,这有帮助。就我而言,缺少 AllowOverride 设置。 这也为我修复了它。我正在使用 vagrant scotchbox 物有所值。 这几乎总是问题所在。应该是最佳答案。 这更正了我的问题 - 应该是接受的答案 这对我很有帮助,这应该在#1【参考方案4】:

在尝试进行任何永久链接或服务器配置更改之前,请检查您的 .htaccess 文件。这主要是一个损坏或空白的 .htaccess 文件问题。将htaccess文件重置为default

# 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

【讨论】:

【参考方案5】:

如果默认行为 (example.com/?p=42) 有效,您应该:

更改为您喜欢的固定链接样式:Admin: Settings &gt; Permalinks,然后单击保存。有时它可以解决问题。如果没有: 确认文件/path/to/wordpress/.htaccess 已更改并且现在包含RewriteEngine On 行。如果不包含该行,则为 Wordpress 权限问题。

验证'rewrite'模块是否已加载:使用

创建一个PHP文件
<?php
  phpinfo()
?>

在其中,在浏览器中打开并搜索mod_rewrite。它应该在“加载的模块”部分。 如果不是,请启用它 - 查看您的 apache 默认 index.html 文件以获取详细信息 - 在 Ubuntu 中,您可以使用帮助程序 a2enmod 来执行此操作。

验证 apache 服务器是否正在查看 .htaccess 文件。打开 httpd.conf - 或者它是 Ubuntu 的替代方案,/etc/apache2/apache2.conf。在里面,你应该有类似的东西

<Directory /path/to/wordpress>
  Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

进行这些更改后,不要忘记重新启动您的 apache 服务器。 sudo service apache2 restart

【讨论】:

【参考方案6】:

我们遇到了同样的问题,并通过检查虚拟主机的 error.log 解决了它。我们发现以下消息:

AH00670:FollowSymLinks 和 SymLinksIfOwnerMatch 选项均已关闭, 所以 RewriteRule 指令也被禁止,因为它类似 规避目录限制的能力: /srv/www/htdocs/wp-intranet/

解决方案是在我们的虚拟主机配置中设置Options AllAllowOverride All

【讨论】:

【参考方案7】:

对于 nginx 用户

在您网站的 conf 文件中使用以下内容(通常为 /etc/nginx/sites-available/example.com

location / try_files $uri $uri/ /index.php?q=$uri&$args;

这会将所有永久链接请求传递给 index.php,并使用 URI 字符串和提供的参数。发送systemctl reload nginx 以查看更改,您的非主页链接应该会加载。

【讨论】:

【参考方案8】:

我刚刚通过设置>永久链接将所有帖子的永久链接更改为“月和日”。

现在所有帖子都已打开并且工作正常。

我再次将所有帖子重命名为其实际的永久链接。它再次正常工作。

这个方法对我有用:-)

【讨论】:

【参考方案9】:

如果这一切都不起作用,您的 .htaccess 是正确的,并且永久链接技巧不起作用,您可能没有启用您的 apache2 重写模块

我运行了这个,我的问题解决了:

 sudo a2enmod rewrite 

【讨论】:

phpinfo(); 页面中搜索mod_rewrite 以检查您是否已启用。在apache2Loaded Modules 谢谢!我必须在 apache2.conf 中将 AllowOverride 更改为 All 并运行您的代码以启用重写。【参考方案10】:

如果您的 WordPress 安装在子文件夹中(例如 https://www.example.com/subfolder),请在您的 WordPress 中更改此行 .htaccess

RewriteRule . /index.php [L]

RewriteRule . /subfolder/index.php [L]

这样做,您是在告诉服务器在 WordPress 文件夹(例如 https://www.example.com/subfolder)而不是在公共文件夹(例如 https://www.example.com)中查找 WordPress index.php

【讨论】:

【参考方案11】:

案例 1:- 如果看到此类问题,让我们考虑是否将站点从一个主机迁移到另一个主机。

解决方案:- 只需转到旧服务器复制 .htaccess 文件代码,然后在新服务器 .htaccess 文件中过去。 99% 我会工作的。

【讨论】:

【参考方案12】:

大多数情况下,只需访问 WordPress 管理员中的 Settings -> Permalink 页面并单击 Save(正如其他几个答案已经指出的那样),即可解决此问题。访问此页面时,WordPress 会重写 .htaccess 文件中的指令,从而神奇地解决了该问题。移动站点后通常会出现此问题(站点中断是因为 .htaccess 被遗忘或需要更新设置)。

如果 WordPress 没有写入 .htaccess 文件的正确权限,则在保存设置时,页面顶部会显示一条通知,底部会显示进一步说明。在这种情况下,您需要自己编辑.htaccess 文件,或者更好地修复该文件的权限。该文件位于 WordPress 安装的根目录。 cd 进入目录和sudo chmod 644 .htaccess。您可能还想检查文件是否属于正确的组,并使用chown 进行更改。如果您不知道该怎么做,请咨询您的托管服务提供商。

如果您使用的是共享主机,这可能就是您所能做的。如果您仍然有问题,您可能需要与托管服务提供商的支持联系。否则,请确保在服务器上启用了.htaccess 文件的使用,正如@georgeos 已经建议的那样。请注意,httpd.conf 并不总是使用(Ubuntu indicates it is deprecated 而是the official Apache docs still says it is often the main configuration file)。 /etc/httpd/conf/httpd.conf/etc/apache2/apache2.conf 似乎是这个文件最常见的地方。找到公用文件夹的块,通常是&lt;Directory /var/www/&gt;,并确保AllowOverride 指令设置为All。如果设置为None,您的.htaccess 文件将被服务器简单地忽略。

【讨论】:

【参考方案13】:

只需导航到仪表板中的Settings->Permalink,然后导航到最后的Save Changes按钮。\

【讨论】:

【参考方案14】:

在 WordPress 管理界面中执行以下操作:

    进入管理设置

    点击永久链接并在单选按钮中选择帖子名称。

    向下滚动,您会在此处看到.htaccess 代码。

    <IfModule mod_rewrite.c>
        RewriteRule ^index\.php$ - [L]
        RewriteCond %REQUEST_FILENAME !-f
        RewriteCond %REQUEST_FILENAME !-d
        RewriteRule . /wordpress/index.php [L]
    </IfModule> 
    
    复制代码并粘贴到.htaccess 文件中。

【讨论】:

我在哪里可以找到这个?永久链接中没有这样的东西。 @Boris_yo 据我所知,只有当您的 htaccess 文件是 not 可写时,规则才会显示出来。如果是 wordpress,它只会自己编写... 这个答案太棒了!除非在 Linux 中使用 WP,否则永远不会知道它。非常感谢【参考方案15】:

不久前我遇到了这个问题。我已将我的永久链接重置为默认值或只是保存它,将主题/核心更新为 (4.7.4)/plugins,停用所有插件,切换到默认主题,优化数据库,.htaccess 已经是默认值,检查文件权限,mod_rewrite 已打开.

到目前为止,没有任何效果,有效的是帖子、新页面、/contact 页面,旧页面除外。

基本上,不起作用的页面/网址是:

/breeding
/training
/training/*
/breeding/*

最终,我在根文件夹中找到了这些文件:

/breeding.php 和 /training.php

我重命名了这两个文件并且上面的页面正常工作。

【讨论】:

【参考方案16】:

您可能在虚拟主机设置中禁止了 .htaccess。 在这种情况下,设置为默认的永久链接就可以了。

【讨论】:

【参考方案17】:

我安装了 mod_rewrite 来解决这个问题。以下链接提供了安装指南:- http://www.iasptk.com/enable-apache-mod_rewrite-ubuntu-14-04-lts/

【讨论】:

【参考方案18】:

如果您使用default 以外的固定链接(例如Day and nameMonth and nameNumericPost nameCustom Structure),则解决该问题非常简单,您只需

登录到您的管理区域:Settings &gt; Permalinks,应该是:http://yoursite.com/wp-admin/options-permalink.php

选择Default永久链接设置,然后保存更改

然后您可以将其再次返回到您之前的其他永久链接选择如您所愿将其保留为default

请注意,当您将网站从一个域或位置移动到另一个域或位置时,可能会发生此问题。

【讨论】:

这对我有点帮助,我遇到了一些数据库错误,之后我的所有页面都是 404。将永久链接选项切换到另一个选项(例如纯链接)然后回到默认选项修复了我的所有链接! 很高兴听到这个消息:) 完美答案+100 即使mysite.com/wp-admin 不起作用,我如何才能恢复到默认永久链接设置? 完美答案+10086【参考方案19】:

我有同样的问题,所以我删除了 Apache 并重新创建它,问题就解决了。

【讨论】:

【参考方案20】:

这个错误是由于禁用了 apache httpd.conf 文档中的重写 mod 导致的,只需取消注释并享受 seo 友好的永久链接

【讨论】:

【参考方案21】:

如果您可以通过 FTP 访问您的帐户:

首先,登录您的 wp-admin 并转到设置 > 永久链接

您应该在底部看到一些内容:

“如果您的 .htaccess 文件是可写的,我们可以自动执行此操作,但并非如此。”

如果是这样,请执行以下操作:

    进入您的 FTP 客户端的首选项并确保显示隐藏文件(取决于您的 FTP 客户端) - 如果您不这样做,您将无法找到您的 htaccess 文件

    转到您的 wp-admin、wp-content、wp-includes 目录所在的文件夹。检查 .htaccess 文件。如果存在,请跳至第 4 步

    如果不存在,请在您的 FTP 程序中创建一个名为 .htaccess 的新空白文件

    将 .htaccess 文件的 CHMOD 更改为 666(您对如何执行此操作的偏好)

    返回您的永久链接页面并编辑您想要的链接结构。问题应该解决了!

    完成后确保将 htaccess 文件的 chmod 改回 644。

刚刚遇到同样的问题,它似乎立即解决了!祝你好运!

【讨论】:

"mod_rewrite" 这是问题所在,我忘了启用它!谢谢:)【参考方案22】: 检查 .htaccess 上的目录是否正确 检查“siteurl”和“home”字段是否正确

【讨论】:

对我来说,家才是问题所在。我修复了它,然后一切都恢复了工作。 Obrithankyou José Carlos.【参考方案23】:

.htaccess 是一个隐藏文件,因此您必须将所有文件设置为在您的 ftp 中可见。

我建议您将永久链接结构恢复为默认值 (?p=ID),以便确保 .htaccess 是问题所在。

之后,您可以简单地再次设置“月份和名称”结构,看看它是否有效。

PS:你升级到3.1了吗?我见过一些人在这种情况下遇到插件问题。

【讨论】:

是的,我已经显示了隐藏文件。我已经从默认切换到永久,它在默认情况下工作。另外,wordpress会更新自己还是什么?我注意到,当我登录时,我的网站上有一个新的管理任务栏,这是我以前没有的。我不知道它是如何到达那里的。 有人错误地更新到3.1,所以它与插件冲突 缺少 .htaccess 也可能导致此问题,无论您更正固定链接,因此请先检查,不要隐藏或丢失 只需登录 WordPress 管理员并再次保存参数链接。这将生成一个 .htaccess 文件或更新现有文件。 我已经尝试使用管理员并手动更新 .htaccess 文件,但仍然是同样的问题。也禁用插件,但不能修复永久链接问题。

以上是关于WordPress 给我的 404 页面找不到除主页以外的所有页面的主要内容,如果未能解决你的问题,请参考以下文章

nginx-找不到永久链接的404页面[关闭]

找不到页面错误 404 localhost Apache/2.4.10 (Win32)

S3 存储桶找不到 index.html,给我一个 404 错误

只有默认永久链接工作wordpress其他成为404错误

只有默认的永久链接工作 wordpress 其他人变成 404 错误

Wordpress url 显示在 localhost 上找不到的页面,但在网上很好