简言之,是的。。。
“外部”重写规则(如果在中)add_rewrite_rule
规则不是针对index.php
然后,该规则被视为“外部”规则(即不由WordPress内部处理重写),而是写入.htaccess
文件一、 e.如果:
add_rewrite_rule(\'^nutrition/([^/]*)/([^/]*)/?\',\'somethingelse.php?p=12&food=$1 &variety=$2\',\'top\');
使用而不是
add_rewrite_rule(\'^nutrition/([^/]*)/([^/]*)/?\',\'index.php?p=12&food=$matches[1]&variety=$matches[2]\',\'top\');
然后,该规则被识别为非(内部)WordPress规则,并添加到。htaccess文件,而不是内部处理。
Note 对于“外部”规则-您使用
$1
而不是
$matches[1]
;
将自定义规则添加到。htaccess刷新重写规则时.htacess
文件已写入。有一个钩子可以过滤实际编写的内容。mod_rewrite_rules
function wpse50631_htaccess( $rules ){
//Append or preppend extra rules.
return $rules;
}
add_filter(\'mod_rewrite_rules\', \'wpse50631_htaccess\');
The
codex 有这样一句话:
mod_rewrite_rules()
是一个函数,它接受由rewrite\\u rules()生成的数组,并实际将其转换为.htaccess
文件此函数还有一个过滤器,mod_rewrite_rules
, 它将向函数传递要写入的所有规则的字符串.htaccess
, 包括<IfModule>
周围部分。(注意:您也可以看到使用rewrite\\u rules挂钩的插件,但这是不推荐的)。