如果找不到内容,则重定向到旧网站[关闭]
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 警报