これはWordpressの別のバージョンですが、元のバージョンは意図したとおりに機能しませんでした。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\.php$ - [END]
RewriteCond $1 ^(index\.php)?$ [OR]
RewriteCond $1 \.(gif|jpg|png|ico|css|js)$ [NC,OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ - [END]
RewriteRule ^ /index.php [L]
</IfModule>
# END WordPress
このGithubリポジトリからの参照は、少し変更されています。過度のテストの後、このルールはすべての問題を解決するわけではありません。40個のプラグインがあるWordpressWebショップがあり、どこかに書き換えの衝突があります。Wordpressの次のバージョンにURLの書き換えがないことを心から願っています。
RewriteRule ^index\.php$ - [L]
文字列の^
開始を意味し、\
エスケープする.
か、任意の文字を$
意味し、文字列の終了を意味します。
^index\.php$
http(s):// hostname / index.php -
が何もしない[END]
場合、フラグを使用して、現在の書き換え処理を終了するだけでなく、後続の書き換え処理を防ぐことができます。
RewriteCond $1 ^(index\.php)?$ [OR]
RewriteCond
テスト文字列として使用する場合、 URL http(s):// hostname / bla/bla.php$1
の最初から最後まですべてのキャプチャされたコンテンツへの参照。置換または条件で使用される場合、キャプチャされた後方参照を参照します。http(s):// hostname / bla / ble.phpは、にキャプチャします。を介して複数のキャプチャグループにアクセスできます。RewriteRule (bla)/(ble\.php)$ -
bla
$1
ble.php
$2
$3..N
( )
複数の文字を1つのユニットにグループ化し、?
強制的に一致させます。
[OR]
フラグを使用すると、デフォルトのANDではなく、書き換え条件を論理OR関係と組み合わせることができます。
つまり、bla/bla.phpにindex.phpまたは次の条件が含まれている場合
RewriteCond $1 \.(gif|jpg|png|ico|css|js)$ [NC,OR]
( )
複数の文字を1つのユニットにグループ化し、|
文字をサブグループに分け、いずれか1つがある場合はそれらを条件付けます。
[NC]
フラグを指定すると、大文字と小文字を区別しない方法でRewriteRuleが一致します。
つまり、bla/bla.phpがいずれかのファイルタイプまたは次の条件で終了する場合
RewriteCond %{REQUEST_FILENAME} -f [OR]
サーバー変数は、%{NAME_OF_VARIABLE}の形式の変数です。ここで、NAME_OF_VARIABLEは、次のリストから取得した文字列です。
%{REQUEST_FILENAME}
REQUEST_FILENAMEが参照されたときにサーバーによってすでに決定されている場合は、要求に一致するファイルまたはスクリプトへの完全なローカルファイルシステムパスです。それ以外の場合、仮想ホストコンテキストで使用する場合など、REQUEST_URIと同じ値。AcceptPathInfoの値によっては、サーバーがREQUEST_URIの一部の主要コンポーネントのみを使用して、要求をファイルにマップした場合があります。
-f
通常のファイルを確認してください。テスト文字列をパス名として扱い、存在するかどうかをテストします。
つまり、bla/bla.phpがファイルまたは次の条件である場合
RewriteCond %{REQUEST_FILENAME} -d
-d
ディレクトリを確認してください。テスト文字列をパス名として扱い、存在するかどうかをテストします。
つまり、bla/bla.phpがディレクトリの場合
RewriteRule ^(.*)$ - [END] not as in Github [S=1]
このステートメントは、条件の1つがtrueを返した場合にのみ実行されます。
.
任意の文字*
に0回以上一致します。
フラグは、[S]
実行したくないルールをスキップするために使用されます。スキップフラグの構文はです[S=N]
。ここで、スキップN
するルールの数を示します(RewriteRuleが一致する場合)。これは、書き換えルールセットのgotoステートメントと考えることができます。次の例では、要求されたURIが実際のファイルに対応していない場合にのみRewriteRuleを実行します。
要するに、何もしない
RewriteRule ^ /index.php [L]
この[L]
フラグにより、mod_rewriteはルールセットの処理を停止します。ほとんどの場合、これは、ルールが一致した場合、それ以上のルールは処理されないことを意味します。これは、Perlの最後のコマンドまたはCのbreakコマンドに対応します。このフラグを使用して、現在のルールをそれ以上のルールを考慮せずにすぐに適用する必要があることを示します。
つまり、すべてのパスをhttp(s):// hostname/ index.phpとして書き直します。
この小さなドキュメントをapaches.orgのドキュメントから一緒に取得しました。以下のリンク。