2014年2月7日金曜日

PHPのマイクロフレームワーク「Limonade」で、redirectできないときの対処

PHPのマイクロフレームワーク「Limonade」で、redirectできないときの対処です。IPアドレスのURLを指定してリダイレクトすると、Apacheの場合「The requested URL was not found on this server.」と表示されてストップしてしまいます。filter_var_url 部分で、URLチェックしていることが原因らしい。確かに、正規表現のチェック内容を見ると、IPアドレスのURLは考慮されていないようです。というわけで、チェックを外せば、動作するようになります。

Not Foundエラーが表示される
redirect("http://192.168.1.1/")
/lib/limonade.php
function filter_var_url($str)
{
  $regexp = '@^https?://([-[:alnum:]]+\.)+[a-zA-Z]{2,6}(:[0-9]+)?(.*)?$@';
  $options = array( "options" => array("regexp" => $regexp ));
  // return preg_match($regexp, $str) ? $str : false;
  ↓↓↓
  return preg_match($regexp, $str) ? $str : true;
}
参考サイト
limonadeでのリダイレクト失敗の原因を探る(もしもワークスさん)

0 件のコメント:

コメントを投稿