.htaccessという、アパッチ?をつかうサーバー?で使えるウェブサイト?のリダイレクト機能
(以外にも使えるが、概ね私はそれにつかっている)
が、いまいち理解できないまま使っていたので、自己理解のためにチラ裏しておきます・・・
●よくある感じの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]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
RewriteRule ^company/.$ /aboutus/ [L,R=301]
RewriteRule ^maihamas/.$ /service/ship/ [L,R=301]
RewriteRule ^information/090201.html /service/ship/ [L,R=301]
</IfModule>
●概ねこれらで構成されている
・RewriteEngine
⇒ Onにすることでリライト用のモジュールが有効になる?
・RewriteRule
⇒ 条件と置換を記述(必要に応じてオプション)
RewriteRule△条件△置換先△[オプション]
・RewriteBase
⇒ .htaccessがどこにあるか、Rule(ルール)とCond(条件)でどこをベースに考えるべきかの指針
RewriteBase△ディレクトリ
RewriteBase△/test/ とか・・・?
・RewriteCond
⇒ RewriteRuleのCondition(条件)
直下のRuleに効く。複数のCondを列挙してもいい・・・らしい(そんなにやったことない)
RewriteCond△●●が△××のとき
RewriteCond△%{HTTP_HOST}△^www\.example\.com$
アクセスしてきたURLのドメイン(%{HTTP_HOST})がwww.example.comだった場合・・・
あと、上と下についている
<IfModule mod_rewrite.c>
は、リライト用のモジュールがあるかを見てから処理しているというやさしさなので、
優しければ記述する・・・
(WordPressをお手軽インストール?したhtaccessには書いてある・・・やさしさ・・・)
●ルールを書くよ(Rule)
一番よく使う「RewriteRule」
おおむねこれだけ覚えていれば(自分でここを見れば)思い出す程度にメモ
RewriteRule△条件△置換先△[オプション]
・条件
⇒ ^:(ハットというらしい)でドメインを省略できる
(といいつつ、後述のリライトベースで別ディレクトリを指定していると
そこまで省略されるらしいわからん・・・)
$:終わりのマーク。おしりの指定と思っている
それらを踏まえて書くと
RewriteRule△^test/$△/test2/test2.php△[L]
条件 :https://example.com/test/ にアクセスされたら
置換先 :https://example.com/test2/test2.php にリダイレクトさせる
オプション:[L] これにヒットしたら後続はチェックしない
条件のところ難しくない?!?!?
と思ったら、それは私が正規表現を理解していないだけだった
【正規表現チェッカー】というサイトから拝借した表
https://weblabo.oscasierra.net/tools/regex
正規表現で使う記号 | 意味 |
---|---|
^ | 行の最初 |
$ | 行の最後 |
. | 任意の一文字 |
[…] | 括弧内の一文字 [abc]ならabcの内の一文字 |
* | 0回以上の繰返し |
+ | 1回以上の繰返し |
? | 0回か1回 |
{n} | n回の繰返し, n個 |
{m,n} | m回以上、n回以下の繰返し, m〜n個 |
正規表現([]でくくったりしてつかう) | 意味 |
---|---|
a-z | 小文字の半角英文字 |
A-Z | 大文字の半角英文字 |
0-9 | 数字 |
– | 範囲 |
^ | 否定 (^0-9 は数字以外) |
一番理解できていなかったのが「^」ハットで、
行の最初とは・・・となったが、
つまるところ「使いたいhtaccessがどこにあるかで変わる変数」だと考えるようにした。
たとえば・・・
htaccessが「Public_html」のディレクトリにあれば、=「https://ドメイン/」を指していて、
htaccessが「Public_html」配下の「test」ディレクトリにあれば、=「https://ドメイン/test/」ということらしい とチャットGPT君がいってた・・・
・htaccessが「Public_html」のディレクトリにあり
⇒ ^ ≒ https://ドメイン/
・htaccessが「Public_html」配下の「test」ディレクトリにあり
⇒ ^ ≒ https://ドメイン/test/
(チャットGPTにはそうじゃないといわれたが、私はそう認識した・・・)
その他の正規表現の記号(?だの+だの)は、上の表に書いてあるそれぞれの意味が分かれば、
それらを掛け合わせて使うこともできるという感じと認識した。
「.」何か一文字、と「*」0回以上の繰り返し(なくてもいいし、あったらあっただけいい)
⇒ test「.*」$
「test」で始まればなんでもいいし無限にいい となる・・・のかな?
概ね理解できた・・・はず
●条件も記載できる(Cond)
面倒になったので後日記載します・・・
●よくある感じのhtaccessの記述(リダイレクトまわりのとこだけ)