2017-06-20 48 views
0

問題:如何在Azure Web Apps上添加重寫配置?

我試圖從具有nginx的自身的VPS是一個Azure的Web應用程序遷移PHP的Web應用程序。在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

把這個放在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)"> 

並重新啓動應用程序服務,然後我得到了它的工作。

+0

謝謝你。我仍然試圖讓它工作。我使用了你提供的示例,而不是'introduction.php',我使用'。*'不適合我。調試它的最佳方法是什麼?我怎麼能100%確定'web.config'文件正在被讀取。再次感謝。 –

+1

發現我的錯誤。我的代碼在'/ wwwroot/html'而不是'/ wwwroot'中,因此'web.config'文件需要位於'/ wwwroot/html /'中,因爲它是Web應用程序的新根。 –