PSI Labs RSS feed

Windows + Apache httpd 環境で URI にコロン(:)が含まれると 403 Forbidden になる問題

こんにちは、tomita です。

Windows + Apache httpd 環境構築時に少しハマったのでメモしておきます。

mod_rewrite を使って、以下の書き換えルールを考えます。

http://hostname/foo/bar/123:456

↓ 以下に書き換え

http://hostname/foo/bar/index.php?a=123&b=456

.htaccess に書くとこんな感じです。よくみかける書き方ですね。

RewriteEngine On
RewriteBase /foo/bar/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\d+):(\d+)$ index.php?a=$1&b=$2 [QSA,L]

これ、CentOS 等の unix 環境であれば動くんですが、windows 環境では以下のエラーログが出力され 403 Forbidden になります。

(20024)The given path is misformatted or contained invalid characters: Cannot map GET /foo/bar/123:456 HTTP/1.1 to file

調べた結果、windows 環境では「:」はドライブレターとして使うため URI には利用できないようです。なんてこった…

参考 : Bug 41441 – Error 20024 on all pages request containing a ":"

windows + Apache httpd 環境を構築する際はお気を付け下さい。

それでは~