我使用標準的Zend /public/.htaccess
文件(如下所示)。URL編碼參數打破默認的Zend重寫規則
目前我正在嘗試將用戶轉發給特定的控制器/操作,並且將成功重定向URL作爲URL參數提供。
所得URL(組裝經由Zend的URL視圖助手編碼&)看起來像這樣:
localhost/crop/index/successRedirect/localhost%2Fprofile%2Fbasic
然而這種模式顯然違反了默認,Zend的包mod_rewrite的規則:訪問所述URL產生一個標準的Apache 404錯誤; Zend沒有收到請求。
當手動重新形成的最終參數如下,該請求可以作爲所希望的:
localhost/crop/index/?successRedirect=localhost%2Fprofile%2Fbasic
然而,這需要一個hackish的,兩步URL生成處理。如果視圖助手生成的URL獨立工作,那將是理想的。
可以做些什麼來允許url編碼通過?任何有識之士將不勝感激!
這些都是我的.htaccess的內容
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
啓用RewriteLog像這樣不產生輸出的故障模式:
RewriteLogLevel 9
RewriteLog "<path>/rewrite.log"
我試圖通過以下兩個Q提出的解決方案& A的,沒有變化:
- 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'指令以'重寫規則' – 2012-02-02 22:11:47