平成30/ 2018-10-21 05:30
Apache/mod_rewrite


#### mod_rewriteで、HTTP to HTTPSの設定をしている場合、POSTの送信はできなかった。
その場合は、
HTTPのサイトで、HTTPSのプロトコルを含めたURLを記述した。
こんな感じ。
<form action="https://siiz.biz/apply/" method="post">
</form>





___ %{REQUEST_URI}はQUERY_STRINGは含まない。
PHPの環境変数と違って、QUERY_STRINGは含まない。
//
Apache Module mod_rewrite
http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond
REQUEST_URI) The path component of the requested URI, such as "/index.html". This notably excludes the query string which is available as as its own variable named QUERY_STRING.



___ 利用できる環境変数は限られている。
Apache Module mod_rewrite
http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond



//____ POSTの値を渡せないとき
RewriteRule ^east/(.*)$  http://dev-s.xxx.com/$1 [R,QSA,L,P]

ホスト名の異なるページにリダイレクトさせるとき、POST値を受け渡すことができなかった。
[P]をつけたら改善した。理由不明。



//___ サブドメインをつける
RewriteCond %{HTTP_HOST} !^www
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]



//____ SSL<=>NOT SSL
QSAをつけたら、POSTいけるようになった。意味不明。

RewriteCond %{REQUEST_URI} ^/regist/ [OR]
RewriteCond %{REQUEST_URI} ^/entry/  [OR]
RewriteCond %{REQUEST_URI} ^/mypage/
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,QSA,R]

RewriteCond %{REQUEST_URI} !^/regist/
RewriteCond %{REQUEST_URI} !^/entry/
RewriteCond %{REQUEST_URI} !^/mypage/
RewriteCond %{REQUEST_URI} !^/common/
RewriteCond %{REQUEST_URI} !^/images/
RewriteCond %{REQUEST_URI} !^/share/
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,QSA,R]



//____ 否定
http://blog.ozacc.com/archives/001488.html
RewriteRule !^/notrewrite/(.*) - [C]
RewriteRule ^/(.*) /rewrited/$1



//____ Thanks.
Apache Module mod_rewrite
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html



mod rewrite