在IIS上托管Symfony 3内部子目录

时间:2018-03-12 11:21:19

标签: symfony iis

我非常努力地试图让IIS上的Symfony 3应用程序作为网站子目录。

IIS上的结构:

enter image description here

应用程序被称为pfc,它的poit到目录pfc / web,(IIS隐藏root,因为文件夹名称与app相同)

这是web.config:

<?xml version="1.0" encoding="UTF-8"?>
  <configuration>
    <system.webServer>
      <defaultDocument>
        <files>
          <add value="app_dev.php" />
        </files>
      </defaultDocument>
      <rewrite>
        <rules>
          <clear />
          <rule name="StaticFiles" stopProcessing="true">
            <match url="^(.*)$" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
              <add input="{REQUEST_FILENAME}" matchType="IsFile"/>
            </conditions>
            <action type="Rewrite" url="{R:0}" logRewrittenUrl="true" />
          </rule>
          <rule name="Symfony 3" enabled="true" stopProcessing="true">
            <match url=".?" ignoreCase="false" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
              <action type="Rewrite" url="./app_dev.php" />
          </rule>
        </rules>
      </rewrite>
    </system.webServer>
  </configuration>

输入dev.erp.loc / Test2 / pfc最终得到:

enter image description here

像Symfony一样认为自己是一个根应用程序,而不是。

我最好的拍摄是使用 router.request_context.base_url ,但它看起来只能在S2中使用。

现在我坚持我可以称之为中途解决方案

通过web.config中的评论重写部分,我被正确地重定向到了Identity Server,但在登录后我获得了:

enter image description here

为了修复它,我需要取消注释重写部分,使路由再次工作,但它仅适用于浏览器,使其处于此状态将导致&#34;找不到路由& #34;在另一个浏览器中。

在parameters.yml中修复子目录路由会很好,我会在部署脚本中填写,但如果没有其他方法我也可以编辑web.config。

1 个答案:

答案 0 :(得分:0)

最近,我需要处理类似的问题,并且作为副作用,我解决了这个“问题”。我的URL 不带的斜杠为correct。问题是Chrome无法创建规范的网址格式,并且无法向终端请求 Symfony不需要解释