プロが教えるわが家の防犯対策術!

.htaccessのリライトとエラーページについて
.htaccessでリライトの設定をしているのですが、うまくいかない部分があります。

まずwww無しでのアクセスは全てwwwありへ変更しています。

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^○○○.biz [NC]
RewriteRule ^(.*)$ http://www.○○○.biz/$1 [L,R=301]

上記は正常に動作しています。
次は設置しているcgiのURLの設定をしています。

RewriteRule search/(.*) cgi/search/$1 [L] ##正常に動作
RewriteRule ^search/([0-9]+)$ cgi/search/navi.cgi?mode=kt&kt=$1
RewriteRule ^search/([0-9]+)/$ cgi/search/navi.cgi?mode=kt&kt=$1

残りの2つがうまく動作していません。
本来のURLが下記なので
http://www.○○○.biz/cgi/search/navi.cgi?mode=kt&kt=01
↓こちらでアクセスしてみると
http://www.○○○.biz/search/01
404 ページが見つかりません
http://www.○○○.biz/search/01/
500 サーバーエラーが表示されてしまいます。

正常に動作している方でURLを短縮しているのでcgiの階層指定をやめてみましたがダメでした。

RewriteRule ^search/([0-9]+)/$ search/navi.cgi?mode=kt&kt=$1


またエラーページを指定しているのですが、403と404は動作していますが500が通常のページが表示されてしまいます。(401は未確認)
ErrorDocument 401 /error/401.html
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html

色々と調べましたが何がいけないのか分からず手詰まり状態です。
お手数ですがご回答頂けると幸いです。

A 回答 (1件)

RewriteRule search/(.*) cgi/search/$1 [L] ##正常に動作


RewriteRule ^search/([0-9]+)$ cgi/search/navi.cgi?mode=kt&kt=$1
RewriteRule ^search/([0-9]+)/$ cgi/search/navi.cgi?mode=kt&kt=$1

については、2つ目、3つ目のルールは1つ目のルールに内包されてしまいますので、1つ目のルールにマッチして処理されてしまっていると思われます。
ルールの記述の順番を変えてあげればいけるのではないでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2014/02/16 09:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!