URL正規化や、ディレクトリ構造を変更した場合など、目的別の.htaccessの記載例をまとめました。
設定してもうまくいかない場合は、以下の記事が参考になります。
URLの正規化|常時SSL化
正規化についてはこちらの記事を参考にしてください。
ページ単位でリダイレクト
使用ケース | ページを削除した場合、URLを変更した場合 | ||
---|---|---|---|
転送元 | https://example.com/aaa.html | ||
転送先 | https://example.com/bbb.html |
RewriteEngine on
RewriteRule ^aaa.html$ https://example.com/bbb.html [L,R=301]
ディレクトリ単位でリダイレクト
ページ単位ではなく、ディレクトリごと転送したい場合の設定になります。
使用ケース | ディレクトリ構造を変更した場合(CMS変更など) | ||
---|---|---|---|
転送元 | https://example/aaa/post1 | ||
転送先 | https://example/bbb/post1 |
RewriteEngine on
RewriteRule ^aaa(.*)$ /bbb$1 [L,R=301]
ドメイン単位(サイト全体)でリダイレクト
使用ケース | サイトリニューアルでドメインを変更した場合 | ||
---|---|---|---|
転送元 | https://aaa.com/ページURL | ||
転送先 | https://bbb.com/ページURL |
RewriteEngine On
Redirect permanent / https://bbb.com/
サイト移転に伴って、ディレクトリ構造が変わっていないことが前提ですが、上記の設定でドメイン単位のリダイレクトが設定できます。
permanentは恒久的に転送するという意味。
「/」はルートドメイン直下を表し、ここへのアクセスはbbb.comと置き換えてリダイレクトします。
1行で下層ディレクトリ全てに設定が反映されるので、綺麗な記述方法ですね。
記載場所は
初期のワードプレスの.htaccessは
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
こちらのような記載がされています。
htaccessは上から順番に処理を実行していくため
新たなリライトルールを追記する際、リダイレクトするならRewriteEngine Onの直下に記載しましょう。