.htaccessに書くよくあるやーつ

常時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 へリダイレクトします。

# 末尾のスラッシュをなしに統一
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/ へリダイレクトするサンプルです。

old-dirnew-dir を環境に合わせて変更してください。

# ディレクトリ単位でリダイレクト
RewriteRule ^old-dir(.*)$ /new-dir$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/

.htaccess 表記例

WordPressを想定した記述例です。

WordPressの場合はこんな感じで 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 ^(.*)/+$ $1 [R=301,L]

# ディレクトリ単位でリダイレクト
RewriteRule ^blog(.*)$ /$1 [R=301,L]

# ページ単位でリダイレクト
Redirect 301 /blog/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