不幸的是,我被困在运行 WordPress 网站的 Windows 服务器上。我的主机已安装iirf
用于 URL 重写。
我终于得到了这个工作,有点小题大做。但是,在生成匹配规则时,rewrite_rules
WordPress 内部并没有预先设置。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
?