私はmod_rewriteとAkelos Frameworkから抽出したルーティングシステムを使用しています。書き換えエンジンを使用しているときにURLを正しくエンコードする
検索キーのパラメータにいくつかの記号を使用すると、大きな問題が発生します。
ルーティングマップは以下の通りです:コントローラで
$map->connect(":lang/search/:string", array('controller' => 'search','action' => 'index'));
は今、私は、検索キーワードとして$this->registry->map['params']['get']['string']
を取得します。
URLを正しくエンコードする方法が見つかりません。たとえばのは、t\ /#%&=
urlencode()
が
rawurlencode()
がt%5C%20%2F%23%25%26%3D
与え、ページが同じ表示t%5C+%2F%23%25%26%3D
とページが表示さThe requested URL /site/en/search/t\+/#%&= was not found on this server.
を与える文字列を取りましょう。
あなたは、私が本当にURLとあなたが何を読み取ることができませんそれによって、このようなエンコーディングのためにbase64を使用したくないhere on this page
ルータクラスのソースをダウンロードしたり、閲覧することができます。場合
あなたがここに必要がある場合は、同様に.htaccess
ファイルの内容です:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
更新
Here are actually working files for making tests.
あなたは時間があれば、サーバー上のこれらのファイルとテストをダウンロードしてください。
ガイド:
controllerclass.php
- シンプルなコントローラのフレームワークは、それに「コントローラ」クラスを定義することにより、
routerclass.php
を動作するようにsearchcontroller.phpを可能にします - Akelosフレームワークから抽出されたルータクラス、バグがある可能性がありそこ
routes.php
- 我々の場合には、我々は唯一の/search/:string
searchcontroller.php
- 文字列をテストするための基本的なアプリケーション - /このファイル
index.php
に検索/ stringhereポイント - 私は、エラーがここに
.htaccess
を開始するために起こります
私はバグがにおそらくある
searchcontroller.php
、
routes.php
、
controllerclass.php
、あなたが
index.php
に変更を加える必要はないだろうと思いまたはおそらく、私が信じていない
.htaccess
に必要な修正があります。
「B」フラグと「NE」フラグをそれぞれ単独で組み合わせて組み合わせてみてください。 –
同じですが、結果はありませんでした。 – Davit
私はBフラグだけを追加するので、 '[QSA、L、B]' – Gerben