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以外ははじいいるみたいです。(激しく多分)

ということで、ああいう微妙な書き方になったんですね。
わからなかったらソース嫁という勉強になりました。
教えてもらってよかったー。