POSTデータをログに記録するためmod_securityでログをとっている。そのapacheの環境でcakephpをインストールしたところPOSTデータがうまくcakephpにわたらない。そこでいろいろ調べたところ、mod_securityが干渉してmod_write経由で実際のプログラムファイルにPOSTデータが届いていないことが判明した。
mod_securityの設定を変更してPOSTデータのチェックを入れないようhttpd.confを次にしたところ解消した。
SecFilterScanPOST Off
mod_rewriteを使っているソフトはいっぱいあるので注意が必要だ。
POSTデータをログに記録できないとなるとmod_securityを動かす意味がなくなったような…
Comments are off for this postとあるサイトを運営しているのだが、コンテンツはそのままでドメイン名を変更したくなった。新しいドメインを取得してコンテンツをそこに移動すればとりあえずはドメイン名の変更ができるのだが、旧URLに対して外部からリンクが張られていたり、googleなど検索エンジンで旧URLがインデックス登録されていることを考えると、何か策が必要になる。そこで旧URLにアクセスされたときは新URLへリダイレクト(301)するということになる。
Apacheであれば旧URLのトップに 次の.htaccessを作成すればよい(mod_rewriteが対応していることを前提としている)。
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://新FQDN/$1 [R=301,L]
これで私の場合は旧URLから新URLへリダイレクトされるようになった。ちなみにコマンドラインで旧URLにアクセスしたときのレスポンスは次のようになった。
telnet 旧FQDN 80
GET / HTTP/1.1
Host: 旧FQDN
(ここからレスポンス)
HTTP/1.1 301 Moved Permanently
Date: 時刻
Server: Apache
Lcation: http://新URL/
Content-Length: 数字
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”>
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href=”http://新FQDN/”>here</a>.</p>
<hr>
<address>Apache Server at 旧ドメイン Port 80</address>
</body></html>
Connection closed by foreign host.
写真などの画像をアップロードするようなサイトでは、ファイルの大きさ制限等設ける必要がある。また、仮に画像ファイルでなくても、お問い合わせ画 面などユーザが入力する項目に関しては、大量のデータが挿入されて送られてくる可能性がある。そのためプログラムを記述する際にはそのあたりの考慮が必要 となってくるのだが、apacheの設定で受け取りサイズの上限を設定できることがわかった。
とhttpd.confに設定してやればよい。
これによりDoSやサーバクラッシュなどを防ぐことができる。