WP有生成.htaccess重写条件的功能吗?

时间:2012-04-30 作者:Volomike

我知道我可以编辑。htaccess手动访问并在其中添加一个RewriteCond语句,但我需要构建一个插件,通过使用WP rewrites以正确的方式执行此操作,然后将其推入。htaccess with flush\\u rewrite\\u rules()。这种情况下我需要重写。

WP是否有一些模糊的函数,让我将RewriteCond语句推送到中。htaccess?

1 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

简言之,是的。。。

“外部”重写规则(如果在中)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\');
Thecodex 有这样一句话:

mod_rewrite_rules() 是一个函数,它接受由rewrite\\u rules()生成的数组,并实际将其转换为.htaccess 文件此函数还有一个过滤器,mod_rewrite_rules, 它将向函数传递要写入的所有规则的字符串.htaccess, 包括<IfModule> 周围部分。(注意:您也可以看到使用rewrite\\u rules挂钩的插件,但这是不推荐的)。

结束