404不工作,转到主页;如何修复?

时间:2019-11-27 作者:Robert Andrews

每当我调用一个不存在的页面时,说http://www.example.com/foobar/, 它应该调用404.php 主题模板文件。

然而,在我的情况下,网站重定向到主页,/

我不确定我过去是怎么做到这一点的。

我如何确保404。当文件不存在时,php优先?

仅供参考:

我的htaccess文件位于下面。。。

我不确定前两个IfModules来自。我最近尝试并禁用了缓存插件。我已转到永久链接设置并重新保存。

我正在运行多站点。该站点是所讨论的主要站点。我可能需要保留关闭多个站点的能力。

正在删除。。。

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\\.php$ - [L]
。。。不起作用。

之后移除整个部分# BEGIN WordPress 导致服务器级别404:“未找到。在此服务器上未找到请求的URL。此外,在尝试使用ErrorDocument处理请求时遇到404未找到错误。”

# BEGIN LSCACHE
# END LSCACHE
<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_URI} ^/?wp\\-content/+debug\\.log$
        RewriteRule .* - [F,L,NC]
</IfModule>
<IfModule !mod_rewrite.c>
    <Files "debug.log">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order deny,allow
        Deny from all
    </IfModule>
    </Files>
</IfModule>


# BEGIN WordPress
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>

# END WordPress

# Modified for Multisite https://www.namecheap.com/support/knowledgebase/article.aspx/9191/29/how-to-create-a-wildcard-subdomain-in-cpanel
# Previous here:
# RewriteEngine On
# RewriteBase /
# RewriteRule ^index\\.php$ - [L]
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule . /index.php [L]



# Wordfence WAF
<Files ".user.ini">
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
    Order deny,allow
    Deny from all
</IfModule>
</Files>

# END Wordfence WAF

# BEGIN cPanel-generated php ini directives, do not edit
# Manual editing of this file may result in unexpected behavior.
# To make changes to this file, use the cPanel MultiPHP INI Editor (Home >> Software >> MultiPHP INI Editor)
# For more information, read our documentation (https://go.cpanel.net/EA4ModifyINI)
<IfModule php7_module>
   php_flag display_errors Off
   php_value max_execution_time 1000
   php_value max_input_time 1000
   php_value max_input_vars 8000
   php_value memory_limit 1024M
   php_value post_max_size 128M
   php_value session.gc_maxlifetime 1440
   php_value session.save_path "/var/cpanel/php/sessions/ea-php70"
   php_value upload_max_filesize 128M
   php_flag zlib.output_compression Off
</IfModule>
# END cPanel-generated php ini directives, do not edit

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php70” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php70 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit

1 个回复
最合适的回答,由SO网友:Robert Andrews 整理而成

在我的例子中,问题是多站点配置属性NOBLOGREDIRECT

这已在wp config中设置。php。。。

// Redirect non-existent Multisite subdomain calls to www primary site
define( \'NOBLOGREDIRECT\', \'http://www.example.com\' );
这可以防止出现有效的404,因为它总是被解释为对子域的错误调用。

有两种解决方案:

如所述,对其进行注释@brij\'s post (通过Google发现),在wp配置中覆盖它:。php、NOBLOGREDIRECT的定义是,当有人进入您站点上不存在的子域时,可以重定向到您希望的url。但糟糕的是,当有人试图访问不存在的域页面时,它会重定向到NOBLOGREDIRECT定义的位置,而不是抛出404。要修复它,请在函数中添加以下PHP代码。php或任何相关文件

<?php remove_action( \'template_redirect\', \'maybe_redirect_404\' ); ?>

相关推荐

WooThemes-供应商/预订-允许供应商管理资源

我正在尝试从WooThemes为bookings插件带来新功能。在组合预订和供应商插件时,不允许供应商用户管理资源(资源是自定义帖子)。我将新功能添加到资源自定义帖子中,然后将这些功能添加到供应商角色(通过用户角色插件)现在,资源显示在供应商角色的管理菜单中,但当我尝试添加新资源时,会出现“您无权访问此页面”错误。我添加的新功能:https://i.stack.imgur.com/OCDlV.png添加到角色的功能:https://i.stack.imgur.com/5t696.png使用角色登录时显示的