5

我使用標準的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的,沒有變化:

+0

這個建議的解決方案也沒有效果:http://stackoverflow.com/questions/6520484/mod-rewrite-urlencoding-an-already-urlencoded-querystring-parameter-any-way-to - 添加'NE'指令以'重寫規則' – 2012-02-02 22:11:47

回答

3

AllowEncodedSlashes On固定這對我來說,使用精確檢驗URL。但根據http://httpd.apache.org/docs/2.0/mod/core.html#allowencodedslashes,此指令需要位於服務器配置或vhost中。它在.htaccess文件中不起作用。

就我個人而言,我會去查詢字符串解決方案。你可以擴展你的意思嗎?這是一個兩步的URL生成過程?我原以爲這個語法和使用普通的URL助手非常相似。

+0

果然。在'/ etc/apache2/apache2.conf'中設置這個指令 - 我最初的嘗試 - 沒有效果。我只是試圖在虛擬主機('/ etc/apache2/sites-available/default')中設置它,並且它是成功的。謝謝! – 2012-02-02 23:52:03