私はmod_rewriteとAkelosFrameworkから抽出されたルーティングシステムを使用しています。
検索キーパラメータでいくつかの記号を使用しているときに、非常に大きな問題が発生します。
ルーティングマップは次のとおりです。
$map->connect(":lang/search/:string", array('controller' => 'search','action' => 'index'));
コントローラでは$this->registry->map['params']['get']['string']、検索キーワードとして取得します。
URLを正しくエンコードする方法が見つかりません。たとえば、文字列を見てみましょうt\ /#%&=
urlencode()与えるt%5C+%2F%23%25%26%3Dとページ表示The requested URL /site/en/search/t\+/#%&= was not found on this server.
rawurlencode()与えるt%5C%20%2F%23%25%26%3Dとページは同じように表示されます。
このページでルータークラスのソースをダウンロードまたは表示できます
私は本当に、URLや何も読めないようなエンコーディングにbase64を使用したくありません。
ここで必要な場合は、.htaccessファイルの内容もあります。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
アップデート
これらのファイルをダウンロードして、時間があればサーバーでテストしてください。
ガイド:
controllerclass.php-シンプルなコントローラーフレームワーク。クラス「Controller」を定義することにより、searchcontroller.phpが機能できるようにします。
routerclass.php-Akelos Frameworkから抽出されたルータークラス、バグはおそらくそこにあります
routes.php-あなたがあなたのルートを定義する場所、私たちの場合は/search/:string
searchcontroller.php-文字列をテストするための基本的なアプリケーション-/search/stringhereはこのファイルを指します
index.php-すべての開始とルーティングが発生する場所
.htaccess-ここにエラーはないと思います
index.php、、、controllerclass.phpを変更する必要はないroutes.phpと思いますsearchcontroller.php
バグが発生している可能性があります。または、私が信じていないrouterclass.php修正が必要な場合もあります。.htaccess