我有一个基于 Laravel 4 的 PHP 应用程序,我已成功在 Azure Web 应用程序中工作,我遇到的唯一问题是当我尝试访问文件时,example.azurewebsites.net/js/vendor/jquery.slicknav.min.js
我收到“您无权查看此目录或页面。 " 回复。
该文件夹site/wwwroot
是我放置所有 Laravel 应用程序文件的地方,对于那些不熟悉 Laravel 的人来说,它包含四个文件夹:app、Bootstrap、public 和 vendor。
我已将 Azure 门户中的虚拟应用程序和目录设置映射/
到site\wwwroot\public
公共目录并将其放置在一个 web.config 文件中,该文件具有以下内容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="true"/>
<staticContent>
<remove fileExtension=".svg" />
<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
<mimeMap fileExtension=".woff" mimeType="application/font-woff" />
<clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" />
</staticContent>
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains"/>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="X-Requested-With,Content-Type" />
<add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS,DELETE,PUT,PATCH" />
</customHeaders>
</httpProtocol>
<rewrite>
<rules>
<rule name="Laravel4" stopProcessing="true">
<match url="^" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
使用此设置,重写按预期工作,除非文件夹名称包含 app、Bootstrap、public 或 vendor,因为它与example.azurewebsites.net/js/vendor/jquery.slicknav.min.js
.
我的问题是如何修改我的重写规则来解决这个问题?如果我site\wwwroot\public\js\vendor\
通过在末尾添加连字符来重命名文件夹,它将起作用。我也多次重启了容器。
编辑为了更清楚,这是我的目录结构:
├─ wwwroot
│ └─ app
│ └─ bootstrap
│ ├─ public
│ │ └─ css
│ │ └─ files
│ │ └─ fonts
│ │ └─ imgs
│ │ ├─ js
│ │ │ └─ admin
│ │ │ ├─ app
│ │ │ │ └─ link-check.js
│ │ │ └─ old
│ │ │ ├─ vendor
│ │ │ │ └─ sortable.min.js
│ │ └─ less
│ │ └─ packages
│ │ └─ tmp
│ │ └─ uploads
│ └─ vendor
└─ ...
我的web.config
配置link-check.js
可以通过访问,example.azurewebsites.net/js/app/link-check.js
而 sortable.min.js不能通过访问example.azurewebsites.net/js/vendor/sortable.min.js
(并且 /js/vendor 路径中的其他任何内容都无法访问)。
注意:如果我重命名为wwwroot\public\js\vendor
我wwwroot\public\js\vendor-
可以查看sortable.min.js
example.azurewebsites.net/js/vendor-/sortable.min.js