#
ドキュメント

Document

自分のための備忘録です。

Apache Module mod_rewrite

https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

ディレクティブ(Directive)

  • RewriteBase
  • RewriteRule
  • RewriteCond

RewriteCond

RewriteCond ディレクティブは、RewriteRule を実行するための条件を定義するための記述です。 RewriteCond に記述した条件が満たされた時のみ RewriteRule に記述したURLの書き換えと転送が実行されるようになります。

RewriteCond は、RewriteRule 記述の直前に複数記述することができます。 RewriteCond を複数記述した場合には、複数の条件が全て一致した場合に RewriteRule を適用するのか(AND)、複数の条件のいずれかが一致した場合に適用するのか(OR) も指定することができます。

ref. Apache RewriteCond の基礎知識

WordPressの例

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/foo/
RewriteRule (.*) https://example.com%{REQUEST_URI} [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>