Apache 2.0.xの場合
http://labs.unoh.net/2007/07/post_93.html: メンテナンス画面を簡単に出してみるの記事について、下岡さんのフォローをいただきましたhttp://d.hatena.ne.jp/shimooka/20070709/1183963568:mod_rewriteで503で、で、Apache 2.0.58はどうなのよと見てみました。
static const char *cmd_rewriterule_setflag(apr_pool_t *p, rewriterule_entry *cfg, char *key, char *val) { int status = 0; int i; if ( strcasecmp(key, "redirect") == 0 || strcasecmp(key, "R") == 0 ) { cfg->flags |= RULEFLAG_FORCEREDIRECT; if (strlen(val) > 0) { if (strcasecmp(val, "permanent") == 0) { status = HTTP_MOVED_PERMANENTLY; } else if (strcasecmp(val, "temp") == 0) { status = HTTP_MOVED_TEMPORARILY; } else if (strcasecmp(val, "seeother") == 0) { status = HTTP_SEE_OTHER; } else if (apr_isdigit(*val)) { status = atoi(val); } if (!ap_is_HTTP_REDIRECT(status)) { return "RewriteRule: invalid HTTP response code " "for flag 'R'"; } cfg->forced_responsecode = status; } }
なんか、このバージョンでは「!ap_is_HTTP_REDIRECT(status)」あたりで、RDIRECT以外ははじいいるみたいです。(激しく多分)
ということで、ああいう微妙な書き方になったんですね。
わからなかったらソース嫁という勉強になりました。
教えてもらってよかったー。