我在安装了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',)
无论我做什么,模块总是等于默认
答案 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规则