web-dev-qa-db-ja.com

する WP .htaccess RewriteCondを生成する機能がありますか?

.htaccessを手動で編集してその中にRewriteCondステートメントを追加できることは知っていますが、WP rewriteを使用して適切な方法でそれを行うプラグインをビルドする必要があります。 。この場合はRewriteCondが必要です。

WPには、RewriteCondステートメントを.htaccessにプッシュすることを可能にする曖昧な機能がありますか?

2
Volomike

要するにはい….

「外部」書き換えルール

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]を使用します。

.htaccessにカスタムルールを追加する

書き換え規則がフラッシュされると、.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フックを使用してプラグインを見ることもできますが、これは非推奨です)。

6
Stephen Harris