首先,我想说我对Azure非常(非常)陌生。我刚刚发布了一个AngularJS应用程序,我遇到了一个令人恼火的问题。
当第一次从visual studio发布应用程序时,它会将文件放在site\wwwroot中。这很好,因为当时我更改了虚拟路径,以查看www子文件夹。
因此,新设置使/等于site\wwwroot\www
这是因为我的站点的代码实际上位于这个www文件夹中。一切都成功了!太棒了!
然而,当我下一次发布时,整个站点都是站点\wwwroot\www中的位置,这意味着要到达我的索引页面,我必须转到site\wwwroot\www\www。
由于某些原因,通过定义“相对于站点根的物理路径”,它更改了整个发布路径。这是有道理的,但在这个问题上还存在吗?可能是一种不同的练习或环境,我还没见过。
任何建议或建议都将不胜感激!
提前谢谢。
发布于 2017-10-20 08:16:57
由于您已经将/映射到site\wwwroot\www,以后的发布将应用于site\wwwroot\www。根据我的理解,您可以通过ftp工具将www下的web内容直接部署到site\wwwroot,或者您可以使用URL重写而不是更改/的虚拟路径。以及重写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下面。
测试:

为了访问index.html,您需要访问https://brucewebapp.azurewebsites.net/www/index.html。使用url重写规则,您可以访问https://brucewebapp.azurewebsites.net/index.html,如下所示:

https://stackoverflow.com/questions/46844098
复制相似问题