在两个网址上自主部署Docusaurus

3
我正在使用Docusaurus为托管在AWS EC2虚拟服务器上的Web应用程序提供用户手册。用户通过应用程序上的按钮访问它。我正在尝试将其设置为在不进行其他配置的情况下在三个站点上运行(即,我只想从GitHub拉取代码到每个站点,而不进行单独的站点更改)。这三个站点是:
1. localhost/prsm/doc/help/ 2. exampledev.com/prsm/doc/help/ 3. example.com/doc/help/ -- 注意此处没有prsm目录
我已经在docusaurus.config.js中设置了baseUrl为/prsm/doc/help/,前两个站点都可以正常工作,但第三个站点会出现“404未找到”错误。我想过在第三个站点的.htaccess文件中使用apache RewriteRule,但无法确定规则应该是什么。还有其他方法可以让它在第三个站点上运行吗?(将应用程序放在prsm子目录中不是选项,因为用户已经熟知站点3的URL,如果更改将会使他们感到困惑)。

"但是无法确定规则应该是什么" - 如果您可以展示一下您尝试过的内容(以及结果),这将有助于发现其他需要解决的问题。 - MrWhite
1个回答

1

看起来你只需要通过内部重写,从请求的example.com主机中删除(通过Docusaurus生成的URL中可能存在的)/prsm路径段。

例如,假设这是Apache,则可以在根目录的.htaccess文件中使用mod_rewrite:

RewriteEngine On

RewriteCond %{HTTP_HOST} =example.com [NC]
RewriteRule ^prsm/(doc/help/.*) $1 [L]

任何对/prsm/doc/help/<anything>的HTTP请求都会被重写为doc/help/<anything>(即$1反向引用的值)。请注意,这不会“更改”URL。用户仍将在URL中看到/prsm前缀。

请注意,由RewriteRule模式匹配的URL路径不以斜杠开头。


我已经在 docusaurus.config.js 中设置了 baseUrl/prsm/doc/help/
虽然我不熟悉 Docusaurus,但如果这是在客户端 JS 中设置的,那么它不能基于 window.location.hostname 属性有条件地设置吗?

1
我会尝试这个 .htaccess 代码并回报结果。Docusaurus是一个静态网站生成器,所有链接都在生成时固定。因此客户端对docusaurus.config.js的更改不起作用。 - Nigel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接