はじめに
レンタルサーバ環境とmacのxampp環境で動作していたApacheのリライト機能が、windowsのxampp環境でのみ動作しなかった。具体的には404エラーバンバン出てくる。これを抜け出すのに二日もかかってしまったので備忘録として残しておく。
環境
win10 64bit
xampp v3.2.4
Apache 2.4.41
やったこと備忘録
結果はタイトルの通りなんですが。。。原因の詳細のみ知りたい方は飛ばしてください。
最近windowsを使う機会が増えてきたので、xamppで環境構築したのですが、リライト機能だけがどうしても動かなかった。まじでいみわからん。本当にこれ苦しみました。
phpinfoにもちゃんとmod_rewrite読まれてるし、めちゃくちゃ記事サーチしたけど
「AllowOverride None」になってるからでしょ? httpd.confちゃんとみなおせよ! rewriteログだして確認しなさいよ。。。 .htaccess書き方あってる?
てきな感じで書かれているものが多かった。
なので、まずはセキュリティ気にせず、xampp内のファイルAllowOverride None
で全検索かけてAllowOverride All
に全て変えたけどだめ。
次にApacheでrewriteログ出力させたけど何もrewrite関連のログ出ないし不明。
そもそもログだすのにApache2.2と2.4だとrewriteログの出し方違うってこと知らなくて、2.2のやりかたでログ出力させててApacheが立ち上がらなくなったりして、それを解決するのにも時間かかる始末。
で次に.htaccessの書き方を確認する。でもそもそもcakephpのコピペなんで問題ないはずだったけどこれもいろいろ調べつつ時間かかる始末。
macとwindowsで違うところって何だろって考えたところ、
Aliasのところの設定じゃね?ってことで。
原因はこれだった。
原因
httpd.confのAliasとDirectoryに指定するパスに¥を使っていたため。
Alias /dev "C:¥Users¥sakamotoyuya¥Documents¥develop" ←ここと
<Directory "C:¥Users¥sakamotoyuya¥Documents¥develop"> ←ここ
Options FollowSymLinks
AllowOverride All
</Directory>
一見問題ないように見えるけど、¥使うとリライト機能がうまく動作しなくって404エラーバンバン出てくる。
対策
¥じゃなくて/に変えたら治った。
Alias /dev "C:/Users/sakamotoyuya/Documents/develop" ←ここと
<Directory "C:/Users/sakamotoyuya/Documents/develop"> ←ここ
Options FollowSymLinks
AllowOverride All
</Directory>
Alias使った後のDirectoryのパス指定は設定したAlias名を設定できるようで、
以下のようにしても大丈夫だった。
Alias /dev "C:/Users/sakamotoyuya/Documents/develop"
<Directory "/dev"> ←ここ
Options FollowSymLinks
AllowOverride All
</Directory>
こっちの方がスマートだね。
なんでこうなったか?
ドキュメントちゃんと読めば書いてあるのかもだけど、
Aliasのパスの指定するときに、macでもwindowsでもパスをコピぺ
して貼り付けしてるからこうなってた。
¥だとリライト機能なぜか動作しない。。。
なんでだろ???