我對“反應路線”和“IIS 配置”有疑問。我在 IIS 中添加了以下 url 重寫角色:
<?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="/index.html" />
</rule>
</rules>
</rewrite>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
使用該配置,當我使用應用程式導航時它作業正常,但如果我嘗試重繪 頁面,它會變為空白,似乎 url 重寫不起作用。(如果我嘗試使用節點服務器,這不會發生)
uj5u.com熱心網友回復:
看起來你的url重寫規則配置是正確的,我認為問題應該是React路由沒有處理url,如果索引頁面沒有向react路由發送請求,這會導致問題。
在這種情況下,您可以嘗試添加到 Index.html 頁面,這應該可以解決您的問題。并且href屬性應該根據您的反應應用程式進行調整。
你也可以參考這個類似的案例:How do I setup react-router clean URL's with IIS?
uj5u.com熱心網友回復:
感謝@Xudong Peng 的建議,這有助于我解決問題。
問題是關于腳本標簽的路徑,檔案的 url 設定為相對路徑而不是絕對路徑:
<script defer="defer" src="main.bundle.js">
代替:
<script defer="defer" src="/main.bundle.js">
這是由于缺少 webpack 配置,我沒有 在輸出節點中設定publicPath
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist'),
publicPath: '/',
clean: true,
}
補充說問題將得到解決。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/441700.html
