Azure webapplication在尝试使用地址栏或刷新页面访问时返回404
我需要一些关于azure应用程序的帮助,我有一个网站使用azure上托管的ReactJS,但奇怪的事情正在发生 我唯一可以使用地址栏访问的页面是mydomain.com或www.mydomain.com。如果我尝试访问mydomain.com/login之类的内容,它将返回404和一个带有以下消息的白色页面Azure webapplication在尝试使用地址栏或刷新页面访问时返回404,azure,reactjs,Azure,Reactjs,我需要一些关于azure应用程序的帮助,我有一个网站使用azure上托管的ReactJS,但奇怪的事情正在发生 我唯一可以使用地址栏访问的页面是mydomain.com或www.mydomain.com。如果我尝试访问mydomain.com/login之类的内容,它将返回404和一个带有以下消息的白色页面 "The resource you are looking for has been removed, had its name changed, or is temporarily una
"The resource you are looking for has been removed, had its name changed, or is temporarily unavailable".
另一件事是,如果我从家开始,我通常可以使用该网站。例如,如果我在主页上,点击一个发送我到/登录的按钮,但如果我尝试刷新或直接从地址栏进入,则不起作用
现在,我在azure上也有了一个完全相同的暂存代码,并且工作得很好,我可以从任何地方访问任何东西
有人知道这方面的情况吗?似乎您的反应
路由
工作不正常
您可以通过在URL中使用哈希(#)绕过此问题:
例如:
使用http://example.com/#/about
而不是http://example.com/about
在你的路由器中,你应该有这样的东西:
render((
<Router history={hashHistory}>
<Route path="/" component={App}>
<Route path="#/repos" component={Repos}/>
<Route path="#/about" component={About}/>
</Route>
</Router>
), document.getElementById('app'))
渲染((
),document.getElementById('app'))
缺点:
“丑陋”URL
使用此方法无法进行服务器端渲染。就搜索引擎优化而言,你的网站只包含一个页面,几乎没有任何内容。我解决了这个问题,在登台时,azure应用程序是一个web.config文件,不是在生产应用程序中创建的,这就是问题存在的原因,因此,在将web.config文件复制并粘贴到生产环境中后,一切正常。任何面临相同问题的人都可以使用下面的
web.config
文件,该文件应放在/site/wwwroot
目录下
<?xml version="1.0"?>
<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" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
我试过了,但当我这样做时,如果我在主页之前使用#,我会访问它。在我的另一个应用程序中,我有相同的代码并使用/about访问其他应用程序可能有url重写或web配置中的某些内容。。。或者您的web服务器以某种方式修复了该问题。。。您是否说过当您使用/#/about时它会导航到您的主页?现在您应该将#添加到您的路由器组件中。。。只需将#添加到url,它将不起作用。@WilliamCaetano我用您需要对路由器代码所做的更改更新了答案…因为它超出了评论文本限制,我将web.config文件作为单独的答案发布。您能提供该配置文件吗?