Asp.net
web.config 重寫規則在 blob 儲存中的 Azure 靜態網站中不起作用
我有一個託管在 Azure blob 儲存中的單頁 React 應用程序,但收到**請求的內容不存在。**深度連結到頁面時出錯:
我在儲存帳戶中啟用了靜態網站選項:
這些文件都在 $web 容器中:
這包括以下帶有重寫規則的web.config ,該規則應該讓 index.html 處理所有路由:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="React Routes" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="/" appendQueryString="true" /> </rule> </rules> </rewrite> </system.webServer> </configuration>誰能看到我哪裡出錯了?
Azure Storage GPv2 中的靜態網站不同於 Azure 應用服務。它只託管這些包含 HTML/CSS/JavaScript 文件的靜態 Web 文件,其他文件可以在瀏覽器中處理,如圖像
robots.txt等。由於沒有 IIS,它無法處理伺服器端腳本。因此,您的web.config文件更改訪問路由並屬於 IIS 的伺服器端腳本是沒有意義的。實際上,您可以在 Azure 門戶中看到這些文字。
為靜態網站託管配置 blob 服務使您能夠在儲存帳戶中託管靜態內容。網頁可能包括靜態內容和客戶端腳本。Azure 儲存不支持伺服器端腳本。 學到更多
並參考
Learn more連結Static website hosting in Azure Storage與靜態網站託管相比,依賴伺服器端程式碼的動態網站最好使用 Azure 應用服務託管。
如果需要 URL 重寫功能,我建議為您的應用使用 Azure 應用服務。
如果您將 404 頁面指向您的
index.html. 這不是一個完美的解決方案 - 有副作用 - 但它適用於大多數情況。



