私は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