2013-10-23 28 views
3

爲了學習的目的,我正在用symfony構建一個玩具網站。symfony2 .htaccess重定向問題的一條路線

當通過app_dev.php訪問開發模式的網站時,一切工作正常。

此外,在生產模式下,除了一個uri「/音樂」以外,一切都可以使用。在這裏,我遇到了一個奇怪的404錯誤,因爲重定向到「/ music /」。

經過一番研究,我嘗試了幾件事情,如下所述。但我總是得到同樣的錯誤。也許任何人都可以給我一個提示如何解決這個問題。


這裏是日誌條目,請注意,它搜索路由匹配「/音樂/」,而不是「/音樂」,因爲它發送到

[2013-10-23 21:01:37] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /music/"" at /var/www/symfony/runamusic.de/app/cache/prod/classes.php line 1883 {"exception":"[object] (Symfony\Component\HttpKernel\Exception\NotFoundHttpException: No route found for \"GET /music/\" at /var/www/symfony/runamusic.de/app/cache/prod/classes.php:1883, Symfony\Component\Routing\Exception\ResourceNotFoundException: at /var/www/symfony/runamusic.de/app/cache/prod/appProdUrlMatcher.php:197)"} []

我檢查的權限,服務器app/cache/prod,他們似乎沒問題

我雙方消除「應用程序/緩存/ PROD」清除的快取手動和運行php app/console cache:clear --env=prod --no-debug

而且運行php app/console router:match /music提供了正確的路線

[email protected]:/var/www/symfony/runamusic.de$ php app/console router:match /music 
Route "runamusic_music_album_index" matches 

[router] Route "runamusic_music_album_index" 
Name   runamusic_music_album_index 
Path   /music 
Host   ANY 
Scheme  ANY 
Method  ANY 
Class  Symfony\Component\Routing\Route 
Defaults  _controller: Runamusic\MusicBundle\Controller\AlbumController::indexAction 
Requirements NO CUSTOM 
Options  compiler_class: Symfony\Component\Routing\RouteCompiler 
Path-Regex #^/music$#s 

當在「應用程序/配置/路由引入路由.yml「沒有前綴加(我讀到重定向問題與前綴)

... 
runamusic_home: 
    resource: "@RunamusicHomeBundle/Resources/config/routing.yml" 
    prefix: /

runamusic_music: 
    resource: "@RunamusicMusicBundle/Resources/config/routing.yml" 
    prefix: /

runamusic_show: 
    resource: "@RunamusicShowBundle/Resources/config/routing.yml" 
    prefix: /
... 

這裏是路線定義」捆綁/.../合作nfig/routing.yml中」

runamusic_music_album_index: 
    pattern: /music 
    defaults: { _controller: RunamusicMusicBundle:Album:index } 

runamusic_music_album_show: 
    pattern: /music/album/{title} 
    defaults: { _controller: RunamusicMusicBundle:Album:show } 
... 

/音樂重命名模式,例如/MUSICA作品,在這裏沒有重定向。

重新定義在另一束的圖案/音樂產生相同的不希望的重新導向到/音樂/

而且任何不存在的路由我試過被重定向(無重定向從/音樂/音樂/

我知道,一個可能的解決辦法是改變該路由的模式。但我想知道這裏出了什麼問題,以避免將來出現這種情況。

也許在.htaccess的重寫錯誤?

感謝您的幫助。


編輯3:刪除以前增加了

回答

1

所以最後我發現是什麼導致了這種行爲。我需要保存爲我的/音樂圖片...在... /網絡/ 音樂文件夾路線造成的URL重寫從/音樂/音樂/。將圖像移動到另一個目的地(這不會成爲一個uri)解決了這個問題。

+0

從來沒想過那個:) 不錯的工作 – ROLO

1
app/console route:debug 

,看看比賽:)的順序

編輯:

我在看這個

Symfony Routing Component

你看到那個方法嗎?我想它會檢查是否至少有一種方法(不是任何)不重定向到更具描述性的匹配(儘管你有子路徑形成該基本路徑)

嘗試設置一個有效的方法GET | POST或任何你需要的(我想只是GET)

+0

感謝您的建議。我更新了我的問題,以給出路線的順序。我認爲訂單很好,或者我錯過了什麼? – ludviki

+0

我添加了GET方法,仍然是同樣的問題。我也嘗試刪除.htaccess重寫規則並使用「/app.php/music」瀏覽,這個工作,所以也許它是一個.htaccess的問題。我追加.htaccess到我的問題,我不是很熟悉這個 – ludviki

+0

找到了原因,謝謝你的建議 – ludviki