常時SSL前提で書いてます。常時SSLじゃない場合は RewriteRule
などの https://
の部分を http://
に変えてください。
httpsに統一
全てのページへのアクセスを https
に統一します。
http://your-domain.com
へのアクセスを https://your-domain.com
へリダイレクトします。
そのままコピペするだけで使えます。
# httpsに統一
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
wwwなしに統一
https://www.your-domain.com
へのアクセスを https://your-domain.com
へリダイレクトします。
http://www.your-domain.com
へのアクセスを https://your-domain.com
へリダイレクトします。
そのままコピペするだけで使えます。
# wwwなし に統一
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
wwwありに統一
https://your-domain.com
へのアクセスを https://www.your-domain.com
へリダイレクトします。
http://your-domain.com
へのアクセスを https://www.your-domain.com
へリダイレクトします。
そのままコピペするだけで使えます。
# wwwあり に統一
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*) $https://www.%{HTTP_HOST}/$1 [R=301,L]
index.php または index.html なしに統一
https://your-domain.com/index.html
へのアクセスを https://your-domain.com/
へリダイレクトします。
https://your-domain.com/directory/index.php
へのアクセスを https://your-domain.com/directory/
へリダイレクトします。
そのままコピペするだけで使えます。
# index.php(.html)なしに統一
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ https://%{HTTP_HOST}/$1 [R=301,L]
末尾のスラッシュをなしに統一
https://your-domain.com/page-name/
へのアクセスを https://your-domain.com/page-name
へリダイレクトします。
そのままコピペするだけで使えますが、WordPressの場合は書く必要はありません。書くと逆にリダイレクトループが発生したりするので気をつけましょう。
# 末尾のスラッシュをなしに統一
RewriteRule ^(.*)/+$ $1 [R=301,L]
末尾のスラッシュをありに統一
https://your-domain.com/page-name
へのアクセスを https://your-domain.com/page-name/
へリダイレクトします。
そのままコピペするだけで使えますが、WordPressの場合は書く必要はありません。書くと逆にリダイレクトループが発生したりするので気をつけましょう。
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.[^/\.]+$
RewriteRule ^(.*)$ $1/ [R=301,L]
ディレクトリ単位でリダイレクト
ディレクトリ名を変更した場合など。
以下の例は https://your-domain.com/old-dir/page-name/
を https://your-domain.com/new-dir/page-name/
へリダイレクトするサンプルです。
olddir
と newdir
は環境に合わせて変更してください。
# ディレクトリ単位でリダイレクト
RewriteRule ^olddir/(.*)$ /newdir$1 [R=301,L]
ページ単位でリダイレクト
ある1ページだけをリダイレクトする場合。
以下の例は https://your-domain.com/blog/769/
を https://your-domain.com/new-dir/new-page/
へリダイレクトするサンプルです。
リダイレクト元はドメイン以降のみ、リダイレクト先はフルURLで記述します。リダイレクトしたいページがランダムに複数ある場合は、行を追加して書いていきましょう。
# ページ単位でリダイレクト
Redirect 301 /blog/769/ https://your-domain.com/new-dir/new-page/
WordPressを想定した .htaccess 表記例
WordPressを想定した記述例です。WordPressの場合、ドキュメントルートにある .htaccess
に、WordPressに必要な記述が自動的に追加されます。
.htaccess
に自分で追記する場合はこんな感じで WordPressさんが書いた記述(# BEGIN WordPress
から # END WordPress
まで)より上に書きます。これより下に書くと意図した動作にならなかったりします。
また、WP Fastest CacheなどのサードパーティーWordPressプラグインが .htaccess に記述することもあるので、自分が書いた部分を明確にするため # BEGIN 自分
, # END 自分
などのコメントで囲んでおくとよいと思います。
# BEGIN 自分
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# httpsに統一
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# wwwなし に統一
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# index.php(.html)なしに統一
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ https://%{HTTP_HOST}/$1 [R=301,L]
# ディレクトリ単位でリダイレクト
RewriteRule ^blog/(.*)$ /$1 [R=301,L]
# ページ単位でリダイレクト
Redirect 301 /769 https://your-domain.com/1286
</IfModule>
# END 自分
# 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