如果找不到内容,则重定向到旧网站[关闭]

Posted

技术标签:

【中文标题】如果找不到内容,则重定向到旧网站[关闭]【英文标题】:Redirect to old site if content is not found [closed] 【发布时间】:2021-03-21 12:51:34 【问题描述】:

我们最近部署了新网站,因为旧网站给我们带来了很多问题,而且它是一个新闻网站。 我们已将旧站点更改为 old.domain.com,并将新站点设置为 domain.com。以前人们访问 domain.com 上的旧网站,现在转移到 old.doamin.com。将内容从旧站点转移到新站点是不可能的。该站点已有 4 年历史,并且从 domain.com/xyz/abc 之类的站点共享了很多内容,但是现在人们来访问这些旧共享链接时,他们会被定向到新站点 domain.com/xyx/abc,因为内容现在已转移到 old.domain.com/xyz/abc,所以找不到该内容。 所以我想实现重定向,这样当人们点击旧的共享链接 domain.com/xyz/abc 时,他们将被重定向到 old.domain.com/xyz/abc 只更改域,以便可以从旧站点显示内容。站点托管在 cpanel 中的 apachel 中。

我在 htaccess 中尝试了以下方法

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-l
RewriteRule ^(.*) https://old.domain.com/$1 [P]

</IfModule>

P.S 我不是程序员,但我正在努力为我的公司实现这一目标。

【问题讨论】:

URL 在“新”站点 (example.com) 上采用什么形式?它们都直接映射到物理文件吗?还是它们是“虚拟/漂亮”网址(对于“新”网站来说似乎更有可能)? 【参考方案1】:

您可以使用此规则将 URL 从 domain.com/foobar 重定向到 old.domain.com/foobar

RewriteEngine on

RewriteCond %HTTP_HOST ^domain\.com$
RewriteRule . https://old.domain.com%REQUEST_URI [R=302,L]

这会将example.com 上收到的所有请求重定向到old.example.com。如果您在 domain.com 上有一些不应重定向的文件和文件夹,请改用以下内容:

RewriteEngine on

RewriteCond %HTTP_HOST ^domain\.com$
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . https://old.domain.com%REQUEST_URI [R=302,L]

如果可行,请将 R=302 更改为 R=301 以使重定向永久化。

【讨论】:

++ 但请注意,通过在正则表达式模式中使用.,它将跳过登录页面进行重定向,即domain.com/ 我会在获得停机批准后尝试@amitverma 解决方案(以防出现问题)。我想要实现的是,如果从旧站点共享的页面(即在实施新站点之前)example.com/abc/xyz 现在必须重定向到 old.example.com/abc/xyx 但如果从新站点共享页面说 example.com/def/zxc 那么它一定不能被重定向到旧站点,因为内容在新站点中有效。我想表达的是,如果在新站点中找到内容不重定向,但如果在新站点中找不到内容,则重定向到旧站点。这两个网站都已上线。 这确实假设新站点上的 URL 都直接映射到物理文件,这对于“新”站点来说似乎不太可能。 (?) @abckdc 是否有区分/abc/xyz(旧网址)和/def/zxc(新网址)的模式

以上是关于如果找不到内容,则重定向到旧网站[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如果用户点击停留在页面上,则重定向的 Javascript 警报

如果引用者是外部的,则重定向所有流量

如果用户已登录,则重定向

如果页面未被访问,则重定向到另一个页面 PHP

ASP .NET MVC:如果不满足特定条件,则重定向到视图

如果应用程序未以编程方式安装 firebase 动态链接,则重定向到 iOS App Store