我有一个重写规则,可以从以前版本的站点捕获旧URL:
add_rewrite_rule( \'(ninos|familia|hogar|mujeres|hombres)-[a-z-]+\\.php\', \'old_id_redirect.php\', \'top\' );
重写规则或多或少按照预期工作,我在调试器中看到请求已通过
old_id_redirect.php
.
在那里,只有(到目前为止)一个wp-blog-header.php
, 什么都没有,几乎什么都没有。
我在那之后停止执行,看看环境的状态,我看到了$error
设置为“404”。
为什么会这样?如果捕获了add\\u rewrite\\u规则并进行了重定向,为什么$error
是否设置为404?
SO网友:sirnornur
我也遇到了同样的问题,并找到了解决方案。据我目前所知,这个问题可能有两个原因:
WP无法识别您的重写规则,因为它们尚未缓存。你可以通过倾倒来检查get_option( \'rewrite_rules\' );
如果您的规则确实被缓存,那么它们将在该选项中。要确保缓存重写规则,请确保调用:
global $wp_rewrite;
$wp_rewrite->flush_rules();
服务器配置未正确设置为使用
.htaccess
文件(用于Apache服务器)。一种简单的检查方法是键入一个在WordPress主机之后不存在的URL地址,例如。
http://example.com/location-that-doesnt-exist
. 如果服务器正确配置为使用
.htaccess
文件,然后您将看到一个由WP主题设计的404页面。如果设置不正确,那么您将看到服务器的默认404页面,并且它不会由您的WP主题设置样式。