You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure IIS部署Symfony4项目:web.config重写规则需求

解决Azure IIS下Symfony4的URL重写问题

我完全懂你现在的困扰——IIS不支持Apache的.htaccess文件,所以Symfony默认的URL美化规则没法生效,导致必须手动加/index.php才能访问。别担心,下面这个专门适配Symfony的web.config配置应该能解决你的问题,把它放到你设置的根目录(也就是site\wwwroot\testproject\public)下就行:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <!-- 强制所有请求通过index.php处理,实现Symfony的URL重写 -->
                <rule name="Symfony Routes" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>

        <!-- 禁止直接访问敏感文件,提升安全性 -->
        <security>
            <requestFiltering>
                <hiddenSegments>
                    <add segment=".env" />
                    <add segment="composer.json" />
                    <add segment="composer.lock" />
                    <add segment="vendor" />
                    <add segment="var" />
                </hiddenSegments>
            </requestFiltering>
        </security>

        <!-- 确保静态文件直接返回,不经过PHP处理 -->
        <handlers>
            <remove name="PHP_via_FastCGI" />
            <add name="PHP_via_FastCGI" path="*.php" verb="GET,HEAD,POST" modules="FastCgiModule" scriptProcessor="%PHP_FCGI_PATH%" resourceType="Either" requireAccess="Script" />
        </handlers>
    </system.webServer>
</configuration>

关键说明:

  • 核心的重写规则会检查请求的不是文件或目录时,自动把请求转发到index.php,这样就不用手动在URL里加它了。
  • 安全部分禁止了直接访问Symfony的敏感文件和目录,避免泄露配置信息。
  • 处理器配置确保静态文件(比如CSS、JS、图片)直接由IIS返回,不经过PHP,提升性能。

额外检查:

  1. 确认Azure App Service已经启用了URL重写模块——大部分情况下默认是开启的,如果没开,可以在Azure门户的应用服务"扩展"里搜索安装URL Rewrite。
  2. 再核对一下应用设置里的"虚拟应用程序和目录",确保根目录确实指向了site\wwwroot\testproject\public,路径不要写错。

替换完web.config后,重启一下你的Azure应用服务,再直接访问根URL应该就能正常跳转了!

内容的提问来源于stack exchange,提问作者Rubén M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:29:31