apacheでaliasを使用したときのrewriteではまる。。
apacheの設定(httpd.conf)で↓のようにaliasを設定
DocumentRoot /home/htdocs/
Alias /test/ "/home/test/"
http://test.jp/test/
でアクセスすれば/home/test/内が表示される。
そこで、
http://test.jp/test/
↓
https://test.jp/test/
へリダイレクトしたいとする。
/home/test/.htaccessに↓を記載する
# Only SSL
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://test.jp/$1 [R,L]
しかしこれでは
http://test.jp/test/
↓
https://test.jp/
へリダイレクトされてしまう。
/test/はaliasで設定されているため、
^(.*)?$
は↓のxxxxxの部分しかマッチしないので、$1に「test/」は含まれない。。
http://test.jp/test/xxxxx
なので、↓のように書くのが正解。
# Only SSL
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://test.jp/test/$1 [R,L]