【问题标题】:How do I redirect to all pages to be a subdirectory of another website but keep the URLs the same?如何重定向到所有页面以成为另一个网站的子目录但保持 URL 相同?
【发布时间】:2022-11-02 22:25:15
【问题描述】:

我有一个网站,说是montypython.netlify.app

客户的主要网站是holygrail.com,他们希望holygrail.com/resources 显示montypython.netlify.app 的内容,但是保持网址不变.这意味着它应该继续在搜索栏中显示holygrail.com/resources。

这也意味着来自montypython.netlify.app 的任何页面都应该是holygrail.com/resources 的子目录

例子: montypython.netlify.app/about 应显示为 holygrail.com/resources/about

我猜这与在holygrail.com 编辑.htaccess 有关,但我可以参考哪些重写/重定向规则?有很多 URL,所以我可以使用通配符方法吗?

这是我尝试过的:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^holygrail\.com$ [NC]
RewriteRule ^resources/(.*)$ https://montypython.netlify.app/$1 [R=301,L]
</IfModule>

【问题讨论】:

  • 请在您的问题中添加您尝试过的 .htaccess 规则,因为它在 SO 上受到强烈鼓励,谢谢。
  • @RavinderSingh13 我添加了一些规则
  • 谢谢你这样做。恕我直言,我不认为您可以在不更改浏览器中的 URL 的情况下显示其他域的内容。
  • @RavinderSingh13 我用我的两个 Netlify 网站来做这件事。 Netlify TOML 显示重定向规则。如果你去this page,它实际上是在显示this page的内容,所以我知道这是可能的,但我不知道如何使用.htaccess
  • 您需要将源服务器配置为反向代理.您不能单独在.htaccess 中执行此操作,除非已在主服务器配置中进行了部分配置并安装了必要的模块(mod_proxy 等)。您有权访问服务器配置吗?

标签: .htaccess redirect mod-rewrite url-rewriting


【解决方案1】:

也许您的问题与该行有关:

RewriteCond %{HTTP_HOST} ^holygrail.com$ [NC] 

也许你需要尝试做类似的事情

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^resources/(.*)$ https://montypython.netlify.app/$1 [R=301,L]
</IfModule>

【讨论】:

    【解决方案2】:

    我过去曾从事过具有类似目标的项目。我不相信您可以通过重定向来完成此操作。关于使用反向代理的建议将最符合您的要求,但还有另一个选项也可能有用。一些 DNS 提供商提供“DNS Cloaking”或“Stealth Redirects”。这可以配置为holygrail.com 的请求将显示一个包含montypython.netlify.app 内容的框架。您能否对/resources 子目录使用相同的方法,以便holygrail.com/resources 提供一个加载montypython.netlify.app 的框架?

    这样做的缺点是地址栏不会随着您在框架内导航而改变,例如导航到montypython.netlify.app/resources/about 仍将在地址栏中显示holygrail.com/resources,因为它正在显示框架的地址。

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 2021-10-28
      相关资源
      最近更新 更多