.htaccessを手動で編集してその中にRewriteCondステートメントを追加できることは知っていますが、WP rewriteを使用して適切な方法でそれを行うプラグインをビルドする必要があります。 。この場合はRewriteCondが必要です。
WPには、RewriteCondステートメントを.htaccessにプッシュすることを可能にする曖昧な機能がありますか?
要するにはい….
add_rewrite_rule
でルールがindex.php
に向けられていない場合、そのルールは「外部」ルールとして扱われ(つまり、WordPressの内部書き換え処理によって処理されないため)、代わりに.htaccess
ファイルに書き込まれます。すなわち場合:
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ファイルが追加されます。 '外部'規則のための注 - $1
の代わりに$matches[1]
を使用します。
書き換え規則がフラッシュされると、.htacess
ファイルが書き込まれます。実際に書かれているものをフィルタリングするフックがあります。 mod_rewrite_rules
function wpse50631_htaccess( $rules ){
//Append or preppend extra rules.
return $rules;
}
add_filter('mod_rewrite_rules', 'wpse50631_htaccess');
コーデックス はこう言います:
mod_rewrite_rules()
は、rewrite_rules()によって生成された配列を受け取り、実際にそれを.htaccess
ファイルの一連の書き換え規則に変換する関数です。この関数にはフィルタmod_rewrite_rules
もあります。これは、周囲の.htaccess
セクションを含む<IfModule>
に書き出されるすべての規則の文字列をfunctionsに渡します。 (注:rewrite_rulesフックを使用してプラグインを見ることもできますが、これは非推奨です)。