.htaccess docusaurus在2个URL上的自托管部署

vbopmzt1  于 2023-02-24  发布在  其他
关注(0)|答案(1)|浏览(115)

我正在使用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/,并且在前两个站点上运行良好,但在站点3上导致“404未找到”错误。我想在站点3上的.htaccess文件中使用Apache RewriteRule,但无法确定规则应该是什么。或者有没有其他方法可以让它在站点3上工作?(将应用程序放在prsm子目录中不是一个选项,因为站点3的URL已经为用户所熟知,如果更改,他们会感到困惑)。
t1rydlwq

t1rydlwq1#

听起来好像您只需要在example.com主机上请求时删除(通过内部重写)/prsm路径段(可能存在于Docusaurus生成的URL中)。
例如,假设这是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属性有条件地设置吗?

相关问题