私は標準の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、変更なし:
- Adding encoded chars to the url breaks htaccess(
AllowEncodedSlashes On
) - Mod Rewrite and Using PHP's GET for URL's When not Following the Rules(書き換えルールの
QSA
ディレクティブを使用)
この提案された解決法も効果がありませんでした:http://stackoverflow.com/questions/6520484/mod-rewrite-urlencoding-an-already-urlencoded-querystring-parameter-any-way-to-'NE'ディレクティブを追加してください'RewriteRule'へ –