MENU

htaccessの書き方よくわからんのでメモをここにのこす・・・

.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の記述(リダイレクトまわりのとこだけ)

目次