我很遗憾地被困在运行WordPress网站的Windows服务器上。我的主机已安装iirf
进行网址重写。
我终于得到了一点点工作。但是,生成匹配规则时,WordPress中的rewrite_rules
不会前置index.php
。因此,当服务器发送index.php/foo/bar
之类的请求时,WordPress会尝试将其与foo/bar
进行匹配。
我创建了一个解决方法,在重新创建规则之前将index
添加到规则之前。
add_filter('rewrite_rules_array', 'add_index');
function add_index($rules){
foreach ($rules as $rule => $rewrite) {
if(!strpos($rules[$rule],'index.php') !== false) {
unset($rules[$rule]);
$rules['index.php/' . $rule] = $rewrite;
}
}
return $rules;
}
目前这似乎正常运作,但似乎我正在掩盖一个潜在的问题。 WordPress不应该自动以这种方式创建规则,或者是否有我缺少的设置标记是否添加index.php
?