WordPress 404 模板覆盖我的 .htaccess 设置以解决 404 错误?

Posted

技术标签:

【中文标题】WordPress 404 模板覆盖我的 .htaccess 设置以解决 404 错误?【英文标题】:WordPress 404 template overriding my .htaccess settings for 404 errors? 【发布时间】:2012-07-23 11:00:50 【问题描述】:

在诸如http://website.com/sub/index.html 等拥有自己的.htaccess 的子目录上,由于某种原因,仍然显示我为Wordpress 拥有的404 页面,该页面位于该目录之上。

.htaccess 用于子目录:

ErrorDocument 404 /404.html

.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

如果您想知道,hta 中的链接会被审查。

编辑:

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

【问题讨论】:

你看过这篇文章吗? ***.com/questions/2322559/…希望对您有所帮助! 【参考方案1】:

所有内容都通过 wordpress 进行路由,因此当对 /sub/no_file.html 之类的请求不存在时,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>

【讨论】:

我添加了,但仍然有同样的问题。【参考方案2】:

默认的 .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

神奇之处在于以 RewriteCond 开头的行。他们指示 Apache 应用规则 RewriteRule 。 /index.php [L](这意味着“任何 URL 都将转到 index.php”),仅当 URL 不是现有文件 !-f 或现有目录 !-d 时。

所以这应该默认工作。当您尝试访问已存在的文件时,Wordpress 重写规则不适用。

【讨论】:

不,你看我想要做的是有子目录,比如 sitename.com/subdir 使用它自己的 404 页面。在我的网站上,我拥有的某些网络应用程序位于不同的目录中,并且它们都有自己的 404 与主题等。然而,每当我访问这些目录中不存在的页面时,我就会被带到主目录上的 wordpress 404 错误。

以上是关于WordPress 404 模板覆盖我的 .htaccess 设置以解决 404 错误?的主要内容,如果未能解决你的问题,请参考以下文章

木材是否有默认500模板,就像它有404?

为啥分页不起作用并在 wordpress 网站上出现 404 错误?

木材是不是有像 404 一样的默认 500 模板?

php 模板覆盖wordpress #php #wordpress

WordPress404页面自定义

Underscores主题404.php不显示?