.htaccess - 如果引用者是外部的,则重定向所有流量
问题描述
我的旧网站位于 public_html。我有一个新版本的网站,我安装在 public_html/new/ 中。
我想将所有流量从https://example.com重定向到 https:/example.com/new 但我想允许用户在单击我的链接时浏览旧版本( https://example.com )新网站。
尝试使用:
RewriteCond %{HTTP_REFERER} !^https://example.com/.*
匹配推荐人,但它似乎不起作用。
任何帮助将非常感激。
解决方案
RewriteEngine On RewriteCond %{HTTP_REFERER} !^https://example.com/.* RewriteRule ^$ https://example.com/new/? [R=301,L]
您已将此实现为 301(永久)重定向(如果您从旧站点迁移到新站点,则需要 SEO)。但是,301 重定向将被浏览器永久缓存。并将用户重定向回/new
(从缓存)而不向服务器发出请求。
(此重定向也只重定向旧主页。内页不重定向。这是故意的吗?)
这需要是一个 302(临时)重定向 - 以避免重定向被缓存,但这对 SEO 来说不是那么好。
您可以?noredirect=1
在返回旧站点(在根中)的 URL 上包含一个参数 - 一个不同的 URL - 并且仅在此参数不存在时才重定向。但是,您需要在从新站点导航到旧站点的所有 URL 中保留此 URL 参数。(并且允许任何人通过简单地附加此 URL 参数来访问旧站点。)
但是,@CBroe 在评论中的建议会更好。将旧站点移动到/old
子目录,新站点将替换根中的旧站点。这对 SEO 和用户来说会更好。或者,如果不是同一个域,您可以简单地阻止访问(这将允许从新到旧的链接)。并且会阻止(大多数)机器人访问(尽管您仍然会实现HTTP 响应标头)。但是请注意,这是不可靠的,某些浏览器可能根本没有设置(用户设置)。/old
Referer
/old
X-Robots-Tag: noindex
Referer
推荐阅读
- android - 使用 Android 意图打开 PDF 文件
- wpf - 出现验证错误时,Wpf clear disabled TextBox.Text
- .htaccess - htaccess 重定向参数和端口
- asp.net-mvc - 需要设计模式
- sql-server - 如何使用非聚集索引?
- mysql - 需要太多连接时,Azure Mysql 数据库服务会生成失败的连接
- javascript - Angular 6 - 从外部 js 文件调用 Angular 函数
- jupyter-notebook - Html 演示 ipython 笔记本中的 ipywidget 交互式绘图
- azure-devops - Azure API 管理 - API 的回归测试和性能测试
- javascript - 将 Javascript UUID 函数翻译成 C