Wordpress 子页面在恢复后抛出 404

Posted

技术标签:

【中文标题】Wordpress 子页面在恢复后抛出 404【英文标题】:Wordpress subpages throwing 404 after restoring 【发布时间】:2013-09-20 04:06:59 【问题描述】:

虽然我有编程背景,但我是 wordpress 的新手。最近我将一个 wordpress 网站从 justhost 共享服务器移到了一个 linode vps 服务器(Ubuntu 操作系统)。我做了以下步骤来实现它

    在 vps 上设置 apache2 服务器 在 vps 上设置虚拟主机

    在 /var/www/ftpadmin/www/ 下创建了一个目录 笔记。创建 ftpadmin 是为了限制 ftp 访问该文件夹下的文件。这样做后,我可以制作静态 htmlphp 网站。

    从各个 wordpress 网站的 justhost 服务器备份数据库和 wp-content 文件夹。

    现在在 vps 上,在上面的指定位置,首先我下载最新版本的 wordpress 并解压缩文件。

    mysql上创建同名数据库,然后将原文件导入同一个数据库。

    将新的 wp-content 文件夹替换为原始文件夹中的文件夹。

    我按照https://www.digitalocean.com/community/articles/how-to-set-up-multiple-wordpress-sites-on-a-single-ubuntu-vps 上的说明进行操作。

    重新启动 apache 服务器。现在我可以访问主页了。

    我将 wordpress url 和站点地址 url 的数据库值更正为旧位置的新值,并重新加载了数据库,这也有助于我访问仪表板和登录页面。

    我创建了一个 .htaccess 文件,如http://ahsan.vimmaniac.com/blog/enabling-wordpress-permalinks-on-ubuntu/.中所述

    我还将 /etc/apache2/sites-available/ 中两个部分下的“AllowOveride”更改为

    <Directory />
     Options FollowSymLinks
     AllowOverride all
    </Directory>
    
     <Directory /var/www/ftpadmin/www/domainname>
     RewriteEngine On
     Options Indexes FollowSymLinks MultiViews
     AllowOverride FileInfo
     Order allow,deny
     allow from all
     </Directory>
    

    再次重启服务 apache。

    最后一点,我使用的是自定义模板,因此我有一个 header.php 和 header-sub.php 文件用于主页和导航。

    现在问题来了。当我点击任何子菜单时,我会收到“内部服务器错误”。

    如果我删除 .htaccess 并重新加载 apache 服务器。现在点击子菜单时出现 404 错误。

非常感谢任何帮助?我查看了各个站点以整理这些许多步骤并执行。我不知道我应该做些什么来纠正这种情况。但是当我去仪表板->所有页面时,我可以找到那里存在的所有页面的内容。

提前致谢 法亚兹

编辑 从评论中添加了.htaccess 文件:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /wordpress/ (wordpress replaced with my domainname, bottom also) 
RewriteRule ^index\.php$ - [L] 
RewriteCond %REQUEST_FILENAME !-f 
RewriteCond %REQUEST_FILENAME !-d 
RewriteRule . /wordpress/index.php [L] 
</IfModule>

【问题讨论】:

发布您的 htaccess 文件 RewriteEngine On RewriteBase /wordpress/(wordpress 替换为我的域名,底部也是) RewriteRule ^index\.php$ - [L] RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d 重写规则。 /wordpress/index.php [L] 嗨乔恩,很抱歉把这个粘贴了,我试过缩进,但它没有发生! 我的永久链接设置为帖子名称 嗨,我已经解决了,只是将 RewriteBase /wordpress/ 替换为“RewriteBase /”,将 RewriteRule ./wordpress/index.php [L 替换为“RewriteRule ./index.php [L]”。谢谢你。 【参考方案1】:

我通过替换解决了上述问题 RewriteBase /wordpress/ 为“RewriteBase /” 和 RewriteRule ./wordpress/index.php [L 为“RewriteRule ./index.php [L]”。 在 .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>

【讨论】:

【参考方案2】:

在浏览了几个小时并尝试了许多选项后,终于修复了这个错误。

在您的 Apache httpd.conf 文件的这个块中,(位于我的 CentOS 实例中 $ sudo vi /etc/httpd/conf/httpd.conf)

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None

将 AllowOverride None 更改为 AllowOverride All。

源:https://wordpress.org/support/topic/secondary-or-child-pages-returning-a-404-error-after-wp-34-update#post-3830892

【讨论】:

以上是关于Wordpress 子页面在恢复后抛出 404的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress-检查子页是否属于父页

Wordpress显示子页和同级页的列表(如果有的话)

EB 上的解析服务器在创建新对象后抛出 499

使用window的open方法实现子页面向父页面传值。

子页面向父页面传值

将 WordPress 移动到子目录 url:wp-admin 抛出 404