CakePHPで開発中、ある特定のURLの場合のみ404エラーが発生しました。
一意のURLを生成するためにbase64_encodeなどを駆使して生成したURLで発生。
色々調べてみると…
base64の使用文字
「a-zA-Z0-9+/」
この最後の「/」が問題のようだ。
urlencodeして使用していたけど×
mod_rewriteでURLに「%2F(スラッシュをurlencodeした文字)」が入っていると404を返すらしい。
それを解決するには、「AllowEncodedSlashes On」にすると解決できるそうだ。
これはデフォルトだとOffになっているため、先に%2Fをスラッシュとして認識し、URLが見つからないと404を返すと。。
んじゃ、Onにして解決だね!
と言いたいところだけど、それはちょっと難しい。
これはApacheの設置httpd.confなどで設定するものらしい。
htaccessでは解決できない。
レンタルサーバーなどでは簡単に変更できないので詰んでしまう・・・・
ということで、私は単純にqueryでgetとして送信することで回避させました。
https://zero-one-x.com/xxxx%2Fxxx
↓↓↓↓