当前位置: 首页 > 面试题库 >

在用react构建的网站中服务另一个(独立)页面或静态文件

卜泓
2023-03-14
问题内容

我有一个使用React构建的网站,该网站使用react-
router。对于某些路由,我想提供另一个页面或静态文件,但是由于所有请求都已转发给路由器,因此它不起作用。

例如

www.myapp.com/sitemap.xml
www.myapp.com/something.html

^这些链接第一次起作用,但是一旦我加载网站,它就不起作用,因为所有请求都通过反应路由器进行。

任何使其始终可用的解决方案。谢谢。

编辑

我正在使用配置为将所有请求重定向到index.html的apache服务器,我想这就是这种行为的原因。这是我的配置,但我不知道如何解决。

Options -MultiViews
RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]

更新 我尝试了答案中建议的解决方案。

我的路线看起来像这样,对于something.html我正在加载ServerLoad组件

<Switch>
    <Route exact path="/" component={Home} />
    <Route path="/about" component={About} />
    <Route path="/about" component={About} />
    <Route path="something.html" component={ServerLoad} />
    <Route component={NoMatch} />
</Switch>

在ServerLoad组件的componentDidMount函数中,我这样做了。但这是行不通的。

componentDidMount() {
    window.location.reload(true);
}

更多信息 我已经使用create-react-app设置了这个项目,并通过Express
server(像这样)提供了服务。我不确定是否需要对服务器上的其他静态文件进行一些设置。


问题答案:

这应该工作:

const reload = () => window.location.reload();

<Router>
  // all your routes..
  ...

  // Your special routes..
  <Route path="/sitemap.xml" onEnter={reload} />
  <Route path="/something.html" onEnter={reload} />
</Router>

因此,我认为这应该很清楚;)

更新:

如果这是一个选项,则只需将 target =“ _ blank” 属性放入您的<Link>

恕我直言,这从UX角度来看甚至更好,因为如果这些路由不是您的主应用程序的一部分,则用户可以在访问该 特殊 页面后仅切换Tab 。



 类似资料:
  • 使用静态网站构建工具不但可以让我们构建静态网站的工作大大简化,而且还可以迅速验证自己的想法,以最高效的方式开发网站。 这一章中将分别介绍三款流行的开源静态网站构建工具,然后说明为什幺我们选择使用Hugo来构建静态网站。 对比 下面是三款静态网站构建工具的简要对比: 工具名称 开发语言 构建效率 典型用例 特点 jekyll ruby 比较慢 GitHub Pages默认的静态网站构建工具、kube

  • 我推荐将静态文件跟网站的代码、主题、主体文件分开存储,这样的好处是: 可以使用CDN加快静态文件的访问速度 单独管理静态文件,方便重复应用 可以使用其他工具对静态文件的使用和流量进行控制 云存储 我推荐使用如下两种云存储: 七牛云:https://www.qiniu.com Cloudinary: https://www.cloudinary.com 我将分别介绍两种云储存服务,及其各自的优缺点。

  • 静态网站构建工具简介 Jekyll简介 Hexo简介 Hugo简介

  • 世界上的网站上千万,网页数量更是如天上的星星数也数不清。那幺这些网站都是如何构建的?都包括哪些类型呢?笼统的概括世界上的网站分为两种类型: 静态网站:仅提供展示功能,不能与用户交互,不需要后端数据库存储用户信息 交互式网站:需要与用户交互,保存用户信息 大多数现代Web应用程序使用层叠样式表(CSS)、JavaScript、图片甚至是特殊的字体和字形库,如Awesome字体,这也是我们工具箱中最常

  • 我们当初在注册域名之时没有开设域名邮箱,如果开设的话需要另外付费。我们使用了免费版的腾讯企业邮箱。 免费版本的腾讯企业邮箱有以下限制: 50人帐号上限 2G邮箱容量 2G企业网盘 2G个人中转站 步骤 创建个人域名邮箱的步骤为: 申请一个腾讯企业邮箱 在cloudflare的DNS中增加MX字段 在申请的腾讯企业邮箱中增加成员邮箱地址 配置邮件收发客户端 配置邮件客户端 POP3/SMTP协议接收

  • 我们的网站会用到以下组件: Hugo:用于静态html生成和进行内容管理 Cloudinary:用于托管图片和静态文件 GitHub:用于存储网站代码同时托管网站 Algolia:用于站内搜索 CloudFlare:用于DNS解析和CDN加速 使用stacks-cli命令行工具可用于分析任何网站的技术栈,Chrome浏览器也提供了这样的工具Wappalyzer。

  • 教你从零开始一步步使用Hugo构建静态网站,内容详略得当,图文并茂。

  • 前面我们为Hugo集成了Algolia搜索插件,要让我们的网站具备博客的基本功能的话,一般情况下评论也是非常需要的,评论承载着作者与读者之间交流的桥梁,所以我们可以看到市面上有很多单独的评论服务,比如最出名的disqus,国内也有之前比较出名的多说(现在已经关闭)、有言等等,要使用他们非常简单,只需要嵌入一些简单的代码即刻开启移动社交评论 服务。不是这些服务不好,只是觉得稍微有点笨重,这里我们使用