5

私は標準のZend /public/.htaccessファイルを使用しています(下記参照)。URLエンコードされたパラメータがデフォルトのZendリライトルールを破ります

私はにユーザを特定のコントローラ/アクションに転送しようとしています。は、URLパラメータとして成功したリダイレクトURLを提供します。 (ZendのURLビューヘルパーを用いてエンコードされた&を組み立て)

結果のURLは次のようになります。

localhost/crop/index/successRedirect/localhost%2Fprofile%2Fbasic 

しかし、このパターンは明らかにデフォルト、Zendのパッケージのmod_rewriteのルールに違反:URLにアクセスすると、標準のApache 404を生成しますエラー; Zendはリクエストを受け取りません。次のように最後のパラメータを手動で再形成される場合、所望のように、要求が動作

は:

localhost/crop/index/?successRedirect=localhost%2Fprofile%2Fbasic 

しかし、これはハック、二段階のURL生成処理を必要とします。ビューヘルパーによって生成されたURLが独立して機能するのが理想的です。

URLエンコーディングを通過させるにはどうすればよいですか?洞察力があれば幸いです!

これら

は私の.htaccessの内容ですので、失敗するパターンのための出力を生成しませんようにはRewriteLogを有効にする

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

:私は、次の2つのQによって提案されたソリューションをしようとしました

RewriteLogLevel 9 
RewriteLog "<path>/rewrite.log" 

&A's、変更なし:

+0

この提案された解決法も効果がありませんでした:http://stackoverflow.com/questions/6520484/mod-rewrite-urlencoding-an-already-urlencoded-querystring-parameter-any-way-to-'NE'ディレクティブを追加してください'RewriteRule'へ –

答えて

3

AllowEncodedSlashes Onは、あなたの正確なテストのURLを使用して、私のためにこれを修正しました。ただし、http://httpd.apache.org/docs/2.0/mod/core.html#allowencodedslashesのように、このディレクティブはサーバー構成または仮想ホストのいずれかに存在する必要があります。 .htaccessファイルでは動作しません。

私は個人的にはクエリ文字列の解決策を検討します。これが2段階のURL生成プロセスであることを意味しているのですか?私は、構文が通常のURLヘルパーを使うのと似ていると思っていたでしょう。

+0

確かに。 '/ etc/apache2/apache2.conf'にこのディレクティブを設定すると、私の元の試みは効果がありませんでした。仮想ホスト( '/ etc/apache2/sites-available/default')に設定しようとしましたが、成功しました。ありがとう! –

関連する問題