问题:
我正在尝试将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>
我对这一切都很新,但这是我需要做的一项任务。如果有人能告诉我我做错了什么或者调试这个问题的最佳方法,我感激不尽。
答案 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,然后我就搞定了。