2013-10-14 75 views
0

我有一個Zend Framework 2應用程序,我希望使用.htaccess重寫一些URL。 .htaccess文件位於我的公用文件夾中。 我已經驗證其重寫所有testurl到test.php的Zend Framework 2重寫URL

RewriteRule ^testurl/?$ test.php [NC] 

的test.php的文件也是在公用文件夾一個簡單的重寫規則。 我將此規則放在Zend規則之上,以將所有URL映射到.htaccess中的index.php。

我的問題是我如何重寫這個在索引模塊中說SearchController? 我曾嘗試過各種重寫規則,標誌不同,如

RewriteRule ^testurl/?$ /index/search [NC] 
and 
RewriteRule ^testurl/?$ index/search [NC] 

,但我總是得到404錯誤 所請求的網址無法通過路由匹配。

我希望使用.htaccess的原因是我將在重寫規則中使用正則表達式來捕獲幾個不同的URL。

非常感謝

回答

0

要麼你想:

RewriteRule ^testurl/?$ /index/search [NC,L,R] 

,或者您需要在Zend和路由到SearchController添加路線testurl

+0

非常感謝。這很好。我嘗試過[NC,L]標誌,但它沒有工作,我認爲L是問題,因爲URL需要由我的.htaccess中的Zend重寫規則來處理。爲什麼R,我知道是一個臨時重定向到URL使這個工作?再次非常感謝 – user12345

+0

@ user12345沒有'R',它在內部重寫了URI。這通常意味着在'/ index/search'處必須有一個物理資源,但是這裏有一個Zend路由,它需要通過Zend的路由系統才能正確解釋。內部重寫通常不會削減它,所以需要外部重定向。或者,您可以創建一個新路線,或者使用反向代理請求的'P'標記,並且不會更改瀏覽器地址欄中的URL(只能在加載mod_proxy的情況下運行) –

+0

啊我明白了。我認爲P標誌是我尋找的,因爲我希望URL保持不變。非常感謝 – user12345