我在routing.yml
配置此模式:Symfony2中和mod_rewrite的網址無法正常工作
/{customer}/{site}/content/{id}.{format}
現在我想省略/{customer}/{site}
一部分,並與一個重寫規則重寫。 Symfony已經有一個.htaccess
與重寫規則。我把它修改爲
RewriteRule ^(.*)$ app_dev.php/foo/bar/$1 [QSA,L]
但是,當我指出我的瀏覽器http://localhost/content/42.html
我得到這個異常:
No route found for "GET /content/42.html"
我撥弄了一下週圍,發現了,爲什麼會出現這樣的問題:Symfony的使用_SERVER['REQUEST_URI']
變量來解析請求,但是當您使用mod_rewrite時,此var中的URL不是預期的/foo/bar/content/42.html
,而是content/42.html
。
我可以用我自己的替換app_dev.php
並覆蓋REQUEST_URI
但我不想破解Symfony。
編輯: 卸下/{customer}/{site}
部分從路由配置是無解的,因爲我的工作多客戶/多站點應用程序,我想隱藏通過一個URL的部分,所以我能指出我的瀏覽器到www.my-fancy-site.com
和Apache重寫這個URL到/foo/bar/content/42.html
。
謝謝你的小費,但這並不爲我工作,我清楚我的問題。對於令人困惑的問題抱歉。 – prehfeldt
好主意,謝謝。 – prehfeldt
@prehfeldt我認爲解決方案是現貨,它應該工作。實際的問題不是URL重寫,而是你定義路由的方式。我對$ _SERVER [「REQUEST_URI」]也很困惑,但實際上這不是問題。 考慮一下http://localhost/content/42.html 的示例一旦請求觸及了app_dev.php或app.php,那麼symfony將查找route /content/42.html,因此您需要在此處定義此路由symfony的。 –