使用在线项目进行Symfony路由问题

时间:2009-11-17 20:09:36

标签: php iis-7 routing symfony1 isapi-rewrite

我在安装了Isapi重写的Win XP / IIS 7计算机上有一个Symfony项目。当我进入前端(我的主要)应用程序时,似乎路由根本不起作用。我总是以我的默认模块/操作结束。但是,如果我转动no_script_name = off(在应用程序的settings.yml文件中),那么一切正常。我还有一个管理员应用程序作为项目的一部分(也有no_script_name = off),这也很好。这似乎应该是一个简单的问题,但我们现在已经在这4个小时了。非常感谢任何帮助,谢谢。

编辑:我将前端控制器的环境更改为dev以便使用调试工具栏,发现无论我的URL是什么样子,它总是说

匹配路径“主页”(/)for / with parameters array('module'=>'default','action'=>'index',)

无论我做什么,模块总是等于默认

3 个答案:

答案 0 :(得分:1)

IIS不能很好地支持URL重写,这是Symfony路由工作的要求。本质上,Web服务器应该将所有请求重定向到不存在的文件/路径到Symfony的index.php,并传递所请求的原始URL。 Symfony解码此URL并应用其路由规则。

但是,这是可能的。您需要遵循以下步骤:Symfony on IIS

答案 1 :(得分:1)

我找到了解决方案。我将此代码添加到index.php的顶部

$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];

我在Symfony的IIS教程(http://trac.symfony-project.org/wiki/symfonyOnIIS)中尝试了所有内容,但没有任何区别。如果其他人遇到此问题,请先尝试添加上述代码,然后再使用任何设置或.htaccess规则。

答案 2 :(得分:1)

查看IIS的新Url Rewrite模块:

http://learn.iis.net/page.aspx/734/url-rewrite-module/

它甚至为IIS管理器添加了一个工具,用于导入和转换mod_rewrite规则