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 错误?的主要内容,如果未能解决你的问题,请参考以下文章
为啥分页不起作用并在 wordpress 网站上出现 404 错误?