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


115

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

我已经在线研究了此问题的类似实例,并且与.htaccess文件有很大关系吗?我尝试查找,但是找不到。也许它以某种方式被删除了?它应该位于哪里。

任何建议都会有所帮助

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


建议您也在wordpress.stackexchange.com上提问。
James Wiseman

Answers:


95

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

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

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

PS:您是否已升级到3.1?在这种情况下,我见过一些人遇到插件问题。


1
是的,我已经显示了隐藏文件。我已经从默认切换为永久,它在默认情况下有效。另外,wordpress是否会更新自身或其他内容?我注意到,当我登录时,我的网站上有一个新的管理任务栏,以前没有。我不知道它怎么到达那里。
亚当

有人错误地将其更新为3.1,因此与插件发生冲突
Adam

1
.htaccess无论您如何纠正固定链接,缺失都可能导致此问题,因此请首先检查,而不是隐藏或丢失
Osify

1
只需登录WordPress管理员并再次保存parmalinks。这将生成一个.htaccess文件或更新现有文件。
Keyur Patel's

我尝试使用admin并手动更新.htaccess文件,但仍然存在相同问题。也禁用插件,但不能修复永久链接问题。
杰明(Jaymin)'17

56

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

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

<Directory "/var/www/html">

行更改为:

AllowOverride None

AllowOverride All

然后重新启动Web服务器

systemctl restart apache2

1
谢谢,这有所帮助。在我的情况下,AllowOverride设置丢失了。
抹布

1
这也为我解决了。我正在使用无所事事的苏格兰威士忌盒,这是值得的。
马特·凯

2
这几乎总是问题所在。应该是最佳答案。
诺埃尔·巴伦

这为我纠正了这个问题-应该是公认的答案
Charles

52

修复这个问题很简单,如果你使用了比其他固定链接default,例如Day and nameMonth and nameNumericPost name或者Custom Structure,你只需要

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

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

然后,你可以再次回到它以前的其他永久的选择保持它作为default作为哟心愿

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


1
这在某种程度上帮助了我,我遇到了一些数据库错误,之后我的所有页面均为404。将永久链接选项切换到另一个选项(例如纯文本),然后再切换回默认选项,可以修复所有链接!
PaulBGD

很高兴听到这个消息:)
usama sulaiman

2
完美答案+100
handiansom

甚至无法正常工作时,如何恢复为默认永久链接设置mysite.com/wp-admin
J86

完美答案+10086
Aflext '19

29

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

  • 更改为首选的永久链接样式:Admin: Settings > Permalinks,然后单击“保存”。有时它可以解决问题。如果没有:
  • 验证文件/path/to/wordpress/.htaccess已更改,并且现在包括该行RewriteEngine On。如果不包含该行,则是Wordpress权限问题。
  • 验证是否已加载“重写”模块:使用以下命令创建一个PHP文件:

    <?php
      phpinfo()
    ?>

    在其中,在浏览器中将其打开并搜索mod_rewrite。它应该在“已加载的模块”部分中。如果不是,请启用它-查看您的apache默认index.html文件以获取详细信息-在Ubuntu中,您可以使用helper进行操作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


20

如果所有这些都不起作用,那么您的.htaccess是正确的,并且永久链接技巧没有起作用,则您可能尚未启用apache2 rewite mod

我运行了这个程序,问题就解决了:

 sudo a2enmod rewrite 

mod_rewritephpinfo();页面中搜索以检查是否已启用。这是在Loaded Modulesapache2
vanduc1102

9

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

  1. 进入管理员设置

  2. 单击永久链接,然后在单选按钮中选择帖子名称。

  3. 向下滚动,您将.htaccess在此处看到类似的代码。

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

1
我在哪里找到的?固定链接中没有这样的东西。
Boris_yo 2014年

@Boris_yo据我所知,仅当您的htaccess文件not可写时,规则才会显示..如果它是wordpress,则只需将其本身写入即可...
Obmerk Kronen

1
这个答案真棒!除非在Linux中使用WP,否则永远不会知道。非常感谢
Mayeenul Islam

7

此错误是由于禁用apache httpd.conf文档中的重写mod引起的,请取消注释并享受seo友好的永久链接



4

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

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

解决的办法是设置Options AllAllowOverride All在我们的虚拟主机配置。


3

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

首先,登录到您的wp-admin并转到“设置”>“固定链接”

您应该在底部看到以下内容:

“如果您的.htaccess文件是可写的,我们可以自动执行此操作,但事实并非如此,因此您应该在.htaccess文件中使用这些mod_rewrite规则。单击该字段,然后按CTRL + a来全选。”

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

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

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

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

  4. 将您的.htaccess文件的CHMOD更改为666(您希望如何执行此操作)

  5. 返回“永久链接”页面并编辑所需的链接结构。问题应该解决!

  6. 完成后,请确保将htaccess文件的chmod更改回644。

只是有同样的问题,它似乎可以立即解决!祝好运!


“ mod_rewrite”这是问题所在,我忘了启用它!谢谢:)
Chemaclass '16

3

在大多数情况下,只需访问WordPress管理员中的“设置”->“永久链接”页面并单击“保存即可解决此问题(因为已经指出了其他几个答案)。当访问此页面时,WordPress会在.htaccess文件中重写指令,从而神奇地解决了该问题。该问题通常是在移动网站后发生的(该网站因.htaccess遗留或需要更新设置)。

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

如果您在共享主机上,那可能就是您所能做的。如果仍然有问题,则可能需要与托管服务提供商的支持联系。否则,请确保.htaccess已在服务器上启用文件使用,如@georgeos所建议。请注意,这httpd.conf并不总是使用(Ubuntu表示已弃用,Apache官方文档仍然说它通常是主要配置文件)。/etc/httpd/conf/httpd.conf/etc/apache2/apache2.conf似乎是这个文件最常见的地方。通常<Directory /var/www/>,找到公用文件夹的块,并确保将AllowOverride伪指令设置为All。如果将其设置为None.htaccess服务器将简单地忽略您的文件。



2

您可能在虚拟主机设置中不允许使用.htaccess。在这种情况下,设置为默认永久链接即可。


1

情况1:-让我们考虑是否将站点从一台主机迁移到另一台主机(如果遇到此类问题)。

解决方案:-只需转到旧服务器复制.htaccess文件代码,然后再输入新服务器.htaccess文件即可。99%我会工作的。


0

我遇到了同样的问题,因此我删除了Apache,然后重新安装它,问题就解决了。




0

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

现在,所有职位均已开放且工作正常。

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

这种方法对我有用:-)


0

对于nginx用户

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

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

这将使用URI字符串和提供的参数将所有永久链接请求移交给index.php。请执行一次systemctl reload nginx以查看更改,并且您的非主页链接应该加载。


0

在尝试进行任何永久链接或服务器配置更改之前,请检查您的.htaccess文件。这主要是损坏的或空白的.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


-1

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

到目前为止,什么都行不通,帖子,新页面,/ contact页面(旧页面除外)有效。

基本上,无效的页面/ URL是:

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

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

/breeding.php和/training.php

我将两个文件都重命名,并且上面的页面正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.