2010年2月11日

[Apache-Users 7641] htaccessその2

** Apache ユーザーズメーリングリスト **
** 注意:このメールへの返信は Apache-Users へ行きます **

藤岡です。先の問題の後、実サーバで問題がでましたのでお尋ねします。
次のhtaccessについて考えます。これはテストしている全行です。(コメント行は除く)


Order Allow,Deny

Allow from all
#ErrorDocument 404 /error/not_found.htm

RedirectMatch ^\/Poa_([\w\.'=\-]{5,})\.html$ /mkpagex.php?yspec=Poa_$1    #Redirect

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^text/([a-z]+)_([a-z])0([0156]).html
/mkbunya.php?grp=$1\&sort=$2\&dom=$3 [L]  #Rewrite1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9A-Za-z_.'=-]+)\.html$ mkpage2.php?yspec=$1 [L]     #Rewrite2


意図する動作は、2種類のRewriteがあって、内Rewrite2を Redirectの301に変更する(テスト中は301を省いている)目的のためのテストをするものです。
完成すれば、Rewrite2は取り去ります。
テスト中の実サーバにアップした際の、悪影響を最小限にするため、一部のリダイレクト対象に限定するようにRedirectでは指定しています(Poa_で始まる物だけ)。他の種のurlは現行のRewrite2で処理するようにした。
どちらの変更が起こったかを知るために、Redirectでは一部応答を変更したphpプログラム(mkpagex.php)を使います。

このように準備して、ローカルサーバで たとえばPoa_alpina.htmlを送ると、mkpagex.phpが応答し、Poa_以外(Podocarpus_macrophyllus.htmlなど)はmkpage2.phpが応答することを確認しました。
そこで実レンタルサーバでテストすると、いずれも、Rewrite2(mkpage2.php)しか応答しないのです。つまり、Redirectが成立していないのです。
ただし、もしかするとマッチしてRedirect1を送ったが、mkpagex.phpから404が返り、ファイルがないとなり、結局Rewrite2が実行されたかも知れません。
このあたりの振る舞いは、レンタルサーバなので、適切なログファイルで調べることが困難なのです。アクセスログはあることはあるのですが、数時間の遅れがあり、実質的に使えないのです。

どなたかお知恵をお貸しください。

補足:Rewriteの先頭部分条件がRedirectと異なるのは、”RewriteBase /” があるためではないかと思っています。
--
入退会・変更・配送一時停止は以下へ
http://www.apache.jp/mailman/listinfo/apache-users


投稿者 xml-rpc : 2010年2月11日 12:58
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/93252
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。