Php symfony2.htaccess针对一条路由的重定向问题
出于学习目的,我正在与symfony建立一个玩具网站 通过app_dev.php以开发模式访问站点时,一切正常 同样在制作模式下,除了一个uri“/音乐”,其他一切都可以工作。这里我遇到了一个奇怪的404错误,因为发生了重定向到“/music/”的情况 经过一些研究后,我尝试了以下几种方法。但我总是犯同样的错误。也许有人能给我一个解决这个问题的提示Php symfony2.htaccess针对一条路由的重定向问题,php,symfony,redirect,Php,Symfony,Redirect,出于学习目的,我正在与symfony建立一个玩具网站 通过app_dev.php以开发模式访问站点时,一切正常 同样在制作模式下,除了一个uri“/音乐”,其他一切都可以工作。这里我遇到了一个奇怪的404错误,因为发生了重定向到“/music/”的情况 经过一些研究后,我尝试了以下几种方法。但我总是犯同样的错误。也许有人能给我一个解决这个问题的提示 这是日志条目,请注意,它在发送到服务器时搜索与“/music/”匹配的路由,而不是“/music” [2013-10-23 21:01:37]re
这是日志条目,请注意,它在发送到服务器时搜索与“/music/”匹配的路由,而不是“/music” [2013-10-23 21:01:37]request.ERROR:未捕获的PHP异常Symfony\Component\HttpKernel\Exception\NotFoundHttpException:“在/var/www/Symfony/runamusic.de/app/cache/prod/classes.PHP行1883{”Exception:“[对象](Symfony\Component\HttpKernel\Exception\NotFoundHttpException:未找到\”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的权限,它们似乎没有问题 我通过手动删除“app/cache/prod”和运行
php-app/console-cache:clear--env=prod--no-debug来清除这个错误
同时运行php应用程序/控制台路由器:match/music
提供正确的路由
ludviki@ludviki-MacBook:/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
在“app/config/routing.yml”中导入路由时,没有添加任何前缀(我读过关于前缀重定向问题的文章)
以下是“Bundle/../config/routing.yml”中的路由定义
将模式从/music重命名为例如/musica有效,此处无重定向
将另一个捆绑包中的模式重新定义为/music会产生相同的不必要的重定向到/music/
此外,我尝试的任何不存在的路由都会被重定向(没有从/Music重定向到/Music/)
我知道一个可能的解决办法是改变这条路线的模式,但我想了解这里出了什么问题,以避免将来出现这种情况
可能是.htaccess中的重写错误
谢谢你的帮助
编辑3:删除以前的添加
app/console route:debug
看看比赛顺序是什么:)
编辑:
我在看这个
你看到了吗!方法?我想它会检查是否至少有一个方法(不是任何方法)不重定向到更具描述性的匹配(尽管你有来自该基本路径的子路由)
尝试设置一个有效的方法GET | POST或任何您需要的方法(我认为只是GET)因此,我终于找到了导致这种行为的原因。我将我的/music…路由所需的图像保存在…/web/music文件夹中,该文件夹导致url从/music重写为/music/。将图像移动到另一个目的地(不会成为uri…)解决了问题。谢谢你的建议。我更新了我的问题,给出了路线的顺序。我认为顺序很好,还是我遗漏了什么?我添加了GET方法,仍然是相同的问题。我还尝试删除.htaccess重写规则,并使用“/app.php/music”浏览,这是有效的,因此可能是.htaccess问题。我在我的问题后面加了.htaccess,我对这个不太熟悉,从没想过:)干得好
runamusic_music_album_index:
pattern: /music
defaults: { _controller: RunamusicMusicBundle:Album:index }
runamusic_music_album_show:
pattern: /music/album/{title}
defaults: { _controller: RunamusicMusicBundle:Album:show }
...
app/console route:debug