※ ChatGPTを利用し、要約された質問です(原文:htaccessのマッチが失敗します)
htaccessマッチの失敗と修正方法
このQ&Aのポイント
htaccessの書き方でマッチが失敗し、全てのリクエストがall.cgiに渡されてしまう問題が発生しています。
リクエストURI中に「abc」という文字列が3回以上出現する場合にはabc3.cgiを、1回から2回の場合にはabc12.cgiを動作させるという条件を設定しています。
手直し方法としては、RewriteCondの正規表現パターンを修正し、マッチする条件を適切に指定すれば解決する可能性があります。
下記のように書いていますがうまく動作しません。
どのように手直しすればうまくいきますでしょうか???
hostname/abc_abc_ab_abc.html
というテストを作ってみたのですが、本来であれば、abc3.cgiへ渡されるはずなのですが、全て、all.cgiへ渡されてしまいます。
お分かりになる方、宜しくお願い致します。
RewriteEngine on
RewriteBase /
##リクエストURI中に、abcという文字列が3回以上ならabc3.cgiを動作させる
RewriteCond %{Request_URI} "^(abc){3,}$" [NC]
RewriteRule ^(.+)$ abc3.cgi?$1 [L]
##リクエストURI中に、abcという文字列が1から2回ならabc12.cgiを動作させる
RewriteCond %{Request_URI} "^(abc){1,2}$" [NC]
RewriteRule ^(.+)$ abc12.cgi?$1 [L]
#どれにもマッチしない場合、all.cgiを動作させる。
RewriteRule ^(.+)$ all.cgi?$1 [L]
お礼
ありがとうございました!! とても助かりました!