端くれプログラマの備忘録 Apache [Apache] .html無しを.html付きへリダイレクト

[Apache] .html無しを.html付きへリダイレクト

やりたいこと。

  • https://site/test を https://site/test.html にリダイレクトしたい。
  • 加えて https://site/test/ も https://site/test.html にリダイレクトしたい。
# /test/ -> /test
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/+$ $1 [R=301,L]

# /test -> /test.html
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [R=301,L]

# not found -> index.html
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]

# add www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

# redirect to https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

参考サイト

.htaccess の書き方(リダイレクト編) – Qiita
https://qiita.com/shotets/items/1f8f308e008dcb96bf43

Apacheのmod_rewriteモジュールの使い方を徹底的に解説 | OXY NOTES
http://oxynotes.com/?p=7392

静的なHTMLサイトで拡張子「.htmlあり」でも「なし」でもアクセスできる方法 | [M]まったり・こんふぃでんしゃる【Confidential】
http://deltablog01.com/archives/1140

apache – mod_rewrite:末尾のスラッシュを削除する(1つだけ!) .htaccess mod-rewrite | CODE Q&A [日本語]
https://code.i-harness.com/ja/q/2ed0bb