Azure - 将站点部署到目录但使用子目录作为站点

时间:2017-10-20 07:16:04

标签: azure redirect azure-web-sites publish

我首先要说的是我非常(非常)新的Azure。我刚刚发布了一个AngularJS应用程序,我遇到了一个令人恼火的问题。

第一次从visual studio发布应用程序时,它将文件放在 site \ wwwroot 中。这很好,因为我刚刚更改了虚拟路径以查看 www 子文件夹。

因此新设置使 / 等于 site \ wwwroot \ www

这是因为我网站的代码实际上位于此www文件夹中。一切正常!太好了!

但是,下次我发布时,整个网站都放在 site \ wwwroot \ www 中,这意味着要进入我的索引页面,我必须去站点\ wwwroot的\ WWW \ WWW

出于某种原因,通过定义“相对于站点根目录的物理路径”,它会更改整个发布路径。这有点意义,但是这个问题还存在吗?可能是一种我还没有遇到的不同的做法或设置。

非常感谢任何提示或建议!

提前致谢。

1 个答案:

答案 0 :(得分:0)

由于您已将/映射到site\wwwroot\www,因此稍后的发布将应用于site\wwwroot\www。根据我的理解,您可以通过ftp工具等将您的网络内容直接部署到wwwsite\wwwroot。或者您可以使用URL Rewrite而不是更改/的虚拟路径。您在web.config文件下的重写规则如下:

<强>的web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="hide www sub directory" stopProcessing="true">
          <match url="^www/(.*)"/>
          <action type="Redirect" url="{R:1}" appendQueryString="true" redirectType="Permanent"/>
        </rule>
        <rule name="rewrite to sub directory">
          <match url="^(?!www)(.*)" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="www/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

注意: we.config文件位于site\wwwroot下。

<强> TEST:

Kudu

enter image description here

要访问index.html,您需要访问https://brucewebapp.azurewebsites.net/www/index.html。使用网址重写规则,您只需访问https://brucewebapp.azurewebsites.net/index.html,如下所示:

enter image description here