【问题标题】:Redirecting to custom 404 page in home directory重定向到主目录中的自定义 404 页面
【发布时间】:2015-11-05 10:28:01
【问题描述】:

我无法将 404(不正确的 url 请求)重定向到我开发并上传到服务器的 404 页面 (404.php)。

服务器在 /blog 子文件夹中安装了 Wordpress,所有 404 都被重定向到 wordpress 博客的 404 页面。我在 .htaccess 中设置了重定向,但没有工作。

ErrorDocument 404 /404.php

这是我在 .htaccess 中添加的,但它仍然重定向到博客的 404 而不是 root 中的 404 页面。

我怎样才能覆盖它?

【问题讨论】:

    标签: php wordpress .htaccess redirect


    【解决方案1】:

    据我了解,ErrorDocument 404 /404.php 仅在您未在 .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
    

    因为 wordpress 有自己的life cycle,它使用.htaccess 中的 URL 重写来确定即将到来的页面请求。 WordPress 拥有理解当前请求的核心机制。例如,您创建了一个页面名称hello-word,当您转到http://your_wordpress.com/hello-word 时,wordpress 从 URL 确定 hello-world 并在其数据库中查找它是否有 hello-word 页面。如果当前页面在数据库中不存在,那么它的机制会自动调用位于当前活动主题中的主题 404 模板。

    解决方案

    在wp-content/themes/YOUR-THEME/404.php 中创建一个文件并更改其内容。您无需在.htaccess 中指定ErrorDocument 404 /404.php。阅读更多如何创建404 模板here

    【讨论】:

    • 好的。但是我在根目录中有不同的模板和不同的站点。而且我不希望它重定向到 wordpress 404。有没有办法覆盖 .htaccess 中的 wordpress 重定向??
    【解决方案2】:

    我通过将此代码粘贴到我的 wordpress 主题的 header.php 文件顶部来实现它

     if ( is_404() ) {
          wp_redirect( '../404.php' );
          exit;
       }
    

    现在正在加载根/主站点 404 页面,而不是按预期加载 wordpress 博客的 404 页面。 :)

    【讨论】:

      【解决方案3】:

      首先确保 404.php 存在于正确的位置并且http://www.example.com/404.php 工作正常。

      如果 404.php 和 .htaccess 都存在于同一个根文件夹中,则尝试更改 .htaccess 文件中的以下行

      错误文档 404 /404.php

      到

      错误文档 404 /root/404.php

      【讨论】:

        猜你喜欢
        • 2012-10-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-01
        • 2016-11-21
        • 2015-10-10
        • 2014-12-23
        • 1970-01-01
        • 2019-09-14
        相关资源
        最近更新 更多