ざっくり言うと
1 2 3 4 5 6 7 8 |
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.*)$ - [NC,L] RewriteRule ^redirect-to/(.*)$ /original/$1 [L] |
説明
ポイントとなるのは、
1 |
RewriteRule ^(.*)$ - |
RewriteRule の移動先にあたるところをハイフンだけにすることによって、何もしない、つまりリダイレクトの除外にすることができます。
また、RewriteCond で、Wordpress ではよく「存在するディレクトリ名・ファイル名であれば除外」という風にしていると思います。こんな風に。
1 2 |
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d |
しかし今回は、逆に存在していれば、という条件発動にしてリダイレクトの対象から外しています。
追記:Windows Server(IIS)の場合
Windows Server(IIS)の場合、受信規則を以下のように従って追加していきます。
- URL の一致
- 要求された URL: パターンに一致する
- 使用: 正規表現
- パターン: ^(.*)$
- 条件
- 論理グループ化: いずれかと一致
- 条件 1: ファイルである
- 条件 2: ディレクトリである
- 条件間でキャプチャ グループを追跡する: いいえ
- サーバー変数: とくに設定しない
- アクション
- アクションの種類: なし
- 後続の規則の処理を停止する: はい