ja en en en en ja en nl ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja en ja ja ja ja en ja ja ja ja ja en ja sv en en ja zh ja ja ja ja ja ja az zh fa en en nb es es en en en la en es de en es ja hu af hbs_lat ru sv fr en en en en en en ja ja ja ja ja zh ja zh zh ja ja ja ja ja ja ja en ja ja ja ja ja fr en en en en en en en
Now, http2 is available if your browser accept it.
なんとなくのイメージだけで作業開始したものの、実際に作業してみるとハマりポイントがいくつかあったため、メモに残す。
旧ドメイン配下の任意ページ(存在の有無によらず)へのアクセスがあった場合、移転メッセージを提示する。
同居する他のドメイン名で80番ポートにアクセスが飛んだ時は、明らかに存在するはずのルートへのリクエストのみ403を返し、他のリクエストの場合は404を返す。
移転メッセージには、http[s]://新ドメイン/元リクエストのパス?元リクエストのQUERY_STRING へのリンクを貼っておく。
アクセスログを mysql に残す。
任意ページへのアクセスの受け方
分かりにくいけど,これはもう使ってない方法.
任意ページへのアクセスを、上の処理を行なうスクリプトへ元のGET文字列も含めて飛ばすのは意外と難しい。
.htaccess を使って、Rewrite でリクエストを書き換えると簡単にできる。ただし REFERER はこの時点で死ぬので、REFERER を取りたい場合は他の手段を講じる必要がある。
具体的な記述は、例えば
RewriteEngine On RewriteCond %{HTTP_HOST} ^(old\.domain\.com)(:80)? RewriteCond %{HTTPS} off RewriteRule ^(.*)$ http://redirect.domain.com/?$1 [QSA,R=301,L]
QSA は QUERY_STRING を最後に付与する指示。
php での HTTP ヘッダの返し方
php で HTTP ヘッダを返して、特定のアクセスの場合に 404 とか 403 を返す方法はいくつかある。
詳しくは php 公式ページのリファレンスを見るとして、私の環境では次のコードがうまく動いた。
あらゆる出力 (HTML の DOCTYPE や XML 宣言を含む) より前に記述しないと意味がないことに注意。
header("HTTP",true,404); header("Content-type: text/html; charset=iso-8859-1"); include('./404.php');
404.php は、httpd の 404 ドキュメントを模したファイルで、上の .htaccess を用いた場合は QUERY_STRING に アクセスパスがついてくるので、展開して使えば、それっぽく表示できる。
apache2 の場合、404 や 403 はブラウザの設定に依らず charset が iso-8859-1 で返っていたので、ヘッダに入れた。
なんか php 公式のリファレンスに mysql は古いから mysqli を使え、と書かれていたので、使うことにしたが、ちょっと梃摺った。
$mysqli = new mysqli("DBHOST", "DBUSER", "DBPASS", "DBNAME"); $mysqli->query($query);
mysqli では、特段の理由がない限りはセッションの close をしないらしい。
$query は使いたい SQL をそのまま書いたもの。
いざ文書にしてみると、迫力のない tips だな。
他にも元アクセスのパターンによって何度か print デバッグしないといけないと思うけど、頑張れ!
Categories情報技術 Tagsphp, SQL, Web, サーバ, 通信技術
Post navigation
Previous PostPrevious VMware で CD-ROM boot (ゲストOS再インストール)
Next PostNext SKKFEP
sponsored links
Recent Comments
hadacchi on xmonad on ubuntu 16.04 でバックライトを調整
hadacchi on ubuntu を 16.04に上げたら avoidStruts が効かなくなった件