Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php symfony2.htaccess针对一条路由的重定向问题_Php_Symfony_Redirect - Fatal编程技术网

Php symfony2.htaccess针对一条路由的重定向问题

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

出于学习目的,我正在与symfony建立一个玩具网站

通过app_dev.php以开发模式访问站点时,一切正常

同样在制作模式下,除了一个uri“/音乐”,其他一切都可以工作。这里我遇到了一个奇怪的404错误,因为发生了重定向到“/music/”的情况

经过一些研究后,我尝试了以下几种方法。但我总是犯同样的错误。也许有人能给我一个解决这个问题的提示


这是日志条目,请注意,它在发送到服务器时搜索与“/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