Help us understand the problem. What is going on with this article?

.htaccessでハマった事メモ

More than 3 years have passed since last update.

どうした

今までググってなんとなく書いてた.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に。
スキーム無いとローカル指すのか…

futatski
C/C++/Java/PHP/Python がメインのエンジニア メインは組み込みの通信制御だったけど、 最近はほぼwebでPHPばっか書いてる
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away