Azure webapplication在尝试使用地址栏或刷新页面访问时返回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

我需要一些关于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 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文件作为单独的答案发布。您能提供该配置文件吗?