Apache
Html,
.htaccess,

.htaccessでハマった事メモ

どうした

今までググってなんとなく書いてた.htaccess。
当たり前すぎて出てこない事とかハマった事をメモ程度に書き残しておく。
※ 間違ってることとか一杯ありそうだけど指摘貰えると有り難い

やっぱりちゃんと本読んだほうが良いよね……

RedirectMatchは変数が使えない

なんとなく使ってたRedirectMatch。
特定のディレクトリをhttpsの新パスに転送…という動作をさせたかったので
ググったら変数でホスト名だけ引っ張れば楽じゃね?と思い実行してみた。

RedirectMatch   permanent   /test/ https://%{HTTP_HOST}/xxxx/

結果は「https://%{HTTP_HOST}/xxxx/」がそのまま返ってくる。
ああ使えないんだ…
正規表現もうまく動かないのでwebを参考にRewriteRuleで記述してみることに。

RewriteRuleは行頭に/要らない

こんなのを書いて見たが全くマッチしない。

RewriteRule ^(/test/)$ %{HTTP_HOST}/xxxx/ [R=301,L]

なんでだお前どうした。さっきまでマッチはしてただろおい。

色々試行錯誤してみると

RewriteRule ^(test/)$ %{HTTP_HOST}/xxxx/ [R=301,L]

頭に/が要らないって言う。
こぴぺはダメだ。

RewriteRuleで変換後、URIスキームを付けないとローカルパスに

先程の定義で実行してみると結果が、
http://test.jp/home/user/www/test.jp/test/
は?っと見てみるとなんか足りない。

RewriteRule ^(test/)$ %{HTTP_HOST}/xxxx/ [R=301,L]

スキーム無い。
コピペしたんじゃねえのかよ

RewriteRule ^(test/)$  https://%{HTTP_HOST}/xxxx/ [R=301,L]

スキームを付けて実行した所期待どおりのURLに。
スキーム無いとローカル指すのか…