我正在尝试在azure网站上部署我的反应应用程序。我成功地完成了它。由于它是单页面应用程序,因此无法在重新加载时使用。在重新加载期间,将显示404错误状态代码。
我想在404出现时将页面重定向到 / (index.html或root)。我可以通过编辑web.config文件来完成。但我无法找到我需要的具体重定向政策。例如:
我需要重定向:
http://letsmeetupp.azurewebsites.net/event/eventId=dsdsd-dsdsd-1475750226814
这个
http://letsmeetupp.azurewebsites.net/#!/event/eventId=dsdsd-dsdsd-1475750226814
我想使用前缀#!/ 重定向,以便我可以在我的反应应用中找到该路径并在html 5中推送状态。
我当前的web.config文件是这样的。这让我被重定向到 / ,但我需要带有前缀的整个路径,这有助于我解析散列和推送状态(HTML 5 HISTORY API)。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation debug="false" targetFramework="4.0" />
<customErrors mode="On">
<error statusCode="404" redirect="index.aspx?sec=404" />
</customErrors>
</system.web>
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="default.aspx" />
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="index.html" />
<add value="iisstart.htm" />
</files>
</defaultDocument>
<httpErrors errorMode="Custom" existingResponse="PassThrough">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="#!/" path="/" responseMode="Redirect" />
</httpErrors>
</system.webServer>
</configuration>
在jambor评论后编辑:
嘿@ Jambor-MSFT。我在azure网站上部署了reactJS(单页面应用程序)。事情是我的SPA是一个MVC。我在那里定义了我的路线。从技术上讲,我使用 react-router 来定义SPA应用中的路由。那么对于你的问题你的本地工作正常吗?。确实是的。我知道IIS无法理解路由。我的意思是当 http://letsmeetupp.azurewebsites.net 点击浏览器时,它会呈现 index.html 。并且所有路由都由index.html中包含的react文件进行内部管理。我想要的是在 / 以外的其他路线上,它应该使用前缀重定向到index.html。像这样 http://letsmeetupp.azurewebsites.net/#!/event/eventId=dsdsd 。在此之后,我可以通过删除前缀并呈现正确的路径来在内部处理路由。