URL正規化
2022年10月5日
みなさんこんにちは。
ケミストのWeb担当みやのです。
「Web」記事では、これまでに得たWebに関する知識を記録として残していきたいと思います。
今回は「URL正規化」について調べました。
参考:32Web|htaccessでURLの正規化!SSL(https)とwwwあり/なしの設定方法
URL正規化とは
前回の記事で、常時SSL化したらURLがhttps~になることがわかりましたが、http~と入力するとサイトが表示されなくなってしまいます。
名刺や広告はhttp~で印刷しちゃってるけど常時SSL化したい!という場合はどうしましょう。
http~とアドレスバーに入力しても、http~という情報が入っているQRコードを読み込んでも、自動でhttps~に飛ばしてくれる(恒久的な転送:301リダイレクト)しくみがあります。
このようにURLを統一することをURLの正規化といいます。
ちなみにURLはUniform Resource Locator(統一資源位置指定子)の略だそうです。まあつまりアドレスのことなんですが、通はアドレスとは言わないらしいです。
.htaccessファイルを作ろう
さてURL正規化の方法ですが.htaccessというファイル名なしで拡張子だけのファイルを作ってアップロードすればいいみたいです。
右クリック
→新規作成
→テキストドキュメント
→新しいテキストドキュメント.txtの名前を.htaccessに変更
でOKです。
以前はWindowsではファイル名なしで拡張子だけのファイルを作れなかった気がしますが、今やったら普通にできました。
できない場合はいったん適当なファイル名をつけてアップロードした後、Dreamweaverでファイル名と拡張子を変更して再度アップロードしたらできると思います。
① httpsで統一
.htaccessに以下のように記述します。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
.htaccessには「最後の行に改行を入れる」というルールがあるそうです。忘れないようにしましょう。
② wwwなしで統一
.htaccessに以下のように記述します。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
③ wwwありで統一
.htaccessに以下のように記述します。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
うちのサイトはhttps、wwwありで統一しています。
ためしに以下のリンクをクリックしてみてください。すべてhttps://www.chemist-web.comに飛ぶはずです。
sなし wwwなし
http://chemist-web.com
sなし wwwあり
http://www.chemist-web.com
sあり wwwなし
https://chemist-web.com
まとめ
・URLを統一することをURL正規化という
・URL正規化は.htaccessを使った301リダイレクトを使う
^(.*)$ この顔文字みたいなの何なん。