如何在Azure Web Apps上添加重写配置?

时间:2017-06-20 09:20:29

标签: php azure mod-rewrite iis nginx

问题:

我正在尝试将PHP Web应用程序从拥有自己的VPS和nginx迁移到Azure Web App。在NGINX配置中,还有一些需要迁移的重写规则。现在应用程序已启动并运行,但重写除外。

我做了什么

因此,为了重写,我创建了一个名为applicationHost.xdt的文件,并将其添加到/site文件夹中。我测试了通过添加超时规则来读取新的.xdt,我后来发现它已经插入到/local/Config/applicationhost.config的主配置文件中。但是我的规则不存在,而且根本不起作用。

我还尝试在web.config文件夹中的名称/wwwroot下添加以下文件。

applicationHost.xdt:

   <?xml version="1.0"?>
<configuration  xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.applicationHost>
    <webLimits xdt:Transform="SetAttributes(connectionTimeout)" 
               connectionTimeout="00:00:30" />
  </system.applicationHost>

  <location path="{main_location_for_web_app}" xdt:Transform="InsertIfMissing" >

    <system.webServer xdt:Transform="InsertIfMissing">
      <rewrite xdt:Transform="InsertIfMissing">
        <rules xdt:Transform="InsertIfMissing" lockElements="clear">
          <rule name="amr" enabled="true" stopProcessing="true" lockItem="true">
            <match url="{my app url}/introduction.php" />
            <action type="Redirect" url="{my app url}/reset.php" appendQueryString="true" redirectType="Permanent" />
          </rule>
        </rules>
      </rewrite>
    </system.webServer>
      </location>

</configuration>

我对这一切都很新,但这是我需要做的一项任务。如果有人能告诉我我做错了什么或者调试这个问题的最佳方法,我感激不尽。

1 个答案:

答案 0 :(得分:0)

将其放在web.config文件夹下的/wwwroot文件中。这会将用户从introduction.php重定向到reset.php。我测试了它,它应该工作。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <system.webServer>    
        <rewrite>
            <rules>
                <rule name="amr" enabled="true" stopProcessing="true" lockItem="true">
                    <match url="introduction.php" />
                    <action type="Redirect" url="reset.php" appendQueryString="true" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

有关详细信息,请参阅Creating Rewrite Rules for the URL Rewrite Module

我在更改以下行后也尝试了applicationHost.xdt

<location path="{main_location_for_web_app}" xdt:Transform="InsertIfMissing" >

到:

<location path="%XDT_SITENAME%" xdt:Transform="InsertIfMissing" xdt:Locator="Match(path)">

然后重启App Service,然后我就搞定了。