在具有其自己的404页面的子目录上显示的WordPress 404页面

Com*_*cus 5 wordpress .htaccess

在子目录上,例如http://website.com/sub/index.html具有自己的.htaccess某种原因,该目录仍然显示我在其中的Wordpress所拥有的404页面。

.htaccess用于子目录:

ErrorDocument 404 /404.html
Run Code Online (Sandbox Code Playgroud)

.htaccess主目录:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^website.net$ [OR]
RewriteCond %{HTTP_HOST} ^www.website.net$
RewriteRule ^foghelper.php$ http://website.net/subdirone/ [R=301,L]
RewriteRule ^foghelper.php$ http://website.net/subdirtwo/ [R=301,L]
# DO NOT REMOVE THIS LINE AND THE LINES ABOVE jNLK5d:REDIRECTID


# 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
Run Code Online (Sandbox Code Playgroud)

hta中的链接已过审查,以防您想知道。

编辑:

在添加RewriteCond %{REQUEST_URI} !^/?sub/之前RewriteRule . /index.php [L],错误似乎仍然存在。

Jon*_*Lin 0

所有内容都通过 wordpress 路由,因此当对类似/sub/no_file.html和 it 的请求不存在时,wordpress 会通过其路由它,index.php因为它满足 和!-f条件!-d(不是现有文件,也不是现有目录)。然后它决定找不到该资源,/sub/no_file.html因此它会显示自己的 404 文件。

如果您希望发送到 /sub 的请求绕过 WordPress 的路由,以便在/sub/不存在的文件被请求/404.html时得到服务,您可以RewriteRule . /index.php [L] 在 WordPress 规则之前添加此行,以便它们看起来像这样:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/?sub/
RewriteRule . /index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)