搜索
首页web前端css教程如何将子域作为子目录服务

如何将子域作为子目录服务

假设您有一个网站构建在一个擅长设计的平台上,并且可以在示例中获得。但是该平台在博客方面缺乏。因此,您对自己想:“如果我可以使用其他博客平台并在example.com/blog上提供它怎么办?”

大多数人会告诉您,这与DNS和网站应该如何工作和使用子域相反。但是,将您的内容放在我们根本无法使用子域的根域上有好处。

有一种方法可以在同一URL上提供两个不同的平台。我将向您展示秘密酱汁,以便在本文结尾处,我们将成为blog.example.com作为example.com/blog。

为什么要这样做

因为您在这里,您可能已经知道为什么这是追求的途径。但是,我想确保您在这里是为了这样做的主要原因:SEO。查看这14个案例研究,这些案例研究表明,当人们将子域移到子目录中时,结果表明了积极的结果。您希望您的博客和域共享SEO值。将其放在子域上会有些断开两者的连接。

这就是我的理由,并结束了两个平台,主要领域在WordPress上,子域则在Drupal上。但是本教程是平台不可知的 - 它几乎可以与任何平台一起使用。

也就是说,除非您支付Cloudflare的企业计划,否则我们在本教程中涵盖的Cloudflare方法与Shopify不相容。那是因为Shopify还使用Cloudflare,不允许我们在免费定价层上代理流量。

步骤0(预览)

在跳入之前,我想解释将要发生的事情的高水平。简而言之,我们将有两个网站:我们的主要网站(example.com)和子域(blog.example.com)。我以“博客”为例,但是就我而言,我需要使用不同类型的内容进行Drupal。但是博客是典型的用例。

这种方法依赖于将CloudFlare用于DNS,并提供一些提供魔术的额外内容。我们要告诉Cloudflare,当某人访问example.com/blog时,应该:

  1. 拦截该请求(因为example.com/blog确实不存在),
  2. 在幕后请求其他域(blog.example.com/blog),然后
  3. 通过example.com/blog将结果从最后一步传递到访问者。

好吧,让我们更详细地研究它!

步骤1:使用Cloudflare

同样,我们将Cloudflare用于DNS。指向您的域DNS是开始的第一步。

CloudFlare的原因是,它允许我们创建能够在某人访问某些URL时能够运行一些代码的工人(称为路由,我们将在步骤3中创建)。该代码将负责切换幕后网站。

Cloudflare有一个出色的指南入门。目的是将您的域(无论何处注册)指向CloudFlare的名称服务器,并确认CloudFlare是否在您的Cloudflare帐户中连接。

步骤2:创建工人

该代码将负责切换幕后网站。前往工人,然后单击创建服务

命名您的服务,然后选择“ HTTP处理程序”:

单击创建服务,然后快速编辑

将以下代码粘贴,然后在第16行中替换域名

 //聆听每个请求,并响应我们的功能。
//注意,这仅在CloudFlare配置的路由上运行。
AddEventListener('fetch',function(event){
  event.respondwith(handleRequest(event.request))
}))

//我们处理响应的功能。
异步函数handlequest(请求){
  //只能通过此代理使用请求。
  if(request.method!=='get')
  返回methodnotallowed(请求);
  //请求的URL。
  const url = new URL(request.url);
  //请求“ Origin URL”又称真实博客,而不是请求的内容。
  //这将切换出绝对URL,使相对路径保持不变。 
  const Originurl = url.tostring().replace('https://example.com','https://blog.example.com');
  //原始页面的内容。
  const OriginPage =等待提取(OriginUrl);
  //给出我们的原始页面。
  const newResponse = new响应(OriginPage.Body,OriginPage);返回newresponse;
}

// 嘿!仅获取请求 
函数方法notallowed(请求){
  返回新响应(`方法$ {request.method}不允许。
    状态:405,
    标题:{'允许':'get'}
  }))
}

最后,单击“保存”并部署

步骤3:添加路线

现在,让我们通知CloudFlare哪些URL(又称路由)以运行此代码。前往CloudFlare的网站,然后单击工人

在Cloudflare主屏幕上有工人部分,您可以在其中编辑代码,然后在每个网站上添加路线的工人部分。它们是两个不同的地方,这令人困惑。

首先,单击添加路由

因为我们添加了一个具有许多子页面的博客,所以我们将使用https://example.com/blog*。请注意,星号充当匹配的通配符。该代码将在博客页面和以博客开头的每个页面上运行。

这可能会带来意想不到的后果。例如,您有一个以“博客”开头的页面,但不是实际博客的一部分,例如https://example.com/blogging-services。这将被此规则所掌握。

然后,在服务下拉列表中选择工人。

我们完成了很多工作,但是我们需要添加更多路线 - 博客取决于博客的CSS,JavaScript和其他文件路径(除非所有文件都托管在其他URL上,例如在CDN上)。找到这些的好方法是测试您的路线并检查控制台。

转到您的https://example.com/blog,并确保加载某些内容。它看起来会弄乱,因为它缺少主题文件。目前可以,只要没有产生404错误。重要的是要打开浏览器的DevTools,启动控制台,并记下它找不到或加载的所有红色URL(通常是404或403)。

您需要将这些添加为路线……但只能执行父路径。因此,如果您的红色URL为https://example.com/wp-content/themes/file1.css,则将https://example.com/wp-contenthe作为路线做。如果您想更具体,也可以添加儿童路径,但是想法是使用一条路线来捕获大多数文件。

添加这些路线后,请查看您的URL,看看它看起来像您的子域。如果没有,请检查上一个步骤。 (您可能需要添加更多路线。)

最好通过导航到多页并查看是否缺少任何内容来进行质量检查。我还建议打开DevTools并搜索您的子域(blog.example.com)。如果出现了,您要么需要添加路由来定位这些资源,要么使用平台做某事以停止输出这些URL。例如,我的平台正在用子域输出一个规范标签,因此我找到了一个插件来修改规范URL为我的根域。

步骤4:调味料的秘密(noindex)

您可能会看到我们有问题。我们的URL有两个不同的URL。是的,我们可以使用规范属性来告知Google哪个URL是我们的“主要”,但我们不要将其留给Google选择正确的url。

首先,将整个子域设置为NOIndex(这样做的方法将因平台而异)。然后,在CloudFlare Worker中,我们将添加以下代码行,这基本上说是在通过代理访问当前URL时删除NOINDEX。

 newResponse.headers.delete(“ x-robots-tag”);

完整的代码解决方案是在本文末尾提供的。

步骤5:修改站点地图

最后要做的是修改子域的站点地图,以免使用其中的子域。这样做的方法会因平台而异,但目标是修改站点地图中的基本/绝对/域,以便打印示例example.com/mypost),而不是blog.exmaple.com/mypost。一些插件和模块将允许无自定义代码。

就是这样!解决方案应该起作用!

限制

这种Cloudflare Magic并非没有缺点。例如,它只接受获取请求,这意味着我们只能从服务器中获取东西。我们无法发布哪种形式使用。因此,如果您需要让访问者登录或提交表格,那么我们已经完成的工作还会有更多工作。我在另一篇文章中讨论了一些解决方案。

如前所述,另一个限制是,在Shopify上使用这种方法需要订阅Cloudflare的企业定价层。同样,这是因为Shopify还使用Cloudflare并限制了在其其他计划中代理流量的能力。

如果您试图将同一平台的两个实例合并在一起(例如,您的顶级域和子域都使用WordPress),您也可能会遇到一些问题。但是在这种情况下,您应该能够合并并使用平台的一个实例。

完整的解决方案

这是所有荣耀的代码:

 //聆听每个请求,并响应我们的功能。
//注意,这仅在CloudFlare配置的路由上运行。
AddEventListener('fetch',function(event){
  event.respondwith(handleRequest(event.request))
}))
//我们处理响应的功能。
异步函数handlequest(请求){
  //只能通过此代理使用请求。
  if(request.method!=='get')返回methodnotlowered(request);
  //请求的URL。
  const url = new URL(request.url);
  //请求“ Origin URL”又称真实博客,而不是请求的内容。
  //这将切换出绝对URL,使相对路径保持不变。 
  const Originurl = url.tostring().replace('https://example.com','https://blog.example.com');
  //原始页面的内容。
  const OriginPage =等待提取(OriginUrl);
  //给出我们的原始页面。
  const newResponse = new响应(OriginPage.Body,OriginPage);
  //从原始域中删除“ noindex”。
  newResponse.headers.delete(“ x-robots-tag”);
  //删除CloudFlare缓存,因为它是用于WordPress的。
  //如果您使用的是Cloudflare Apo,并且您的博客不是WordPress(但是
  //您的主要域是),然后阻止APO在原点URL上运行。
  // newResponse.headers.set(“ CF-edge-cache”,“ no-Cache”);返回newresponse; 
}
// 嘿!仅获取请求 
函数方法notallowed(请求){
  返回新响应(`方法$ {request.method}不允许。
    状态:405,
    标题:
    {'允许':'get'}
  }))
}

如果您一路上需要帮助,我欢迎您通过我的网站CreateToday.io与我联系,或者查看我的YouTube进行视频演示。

以上是如何将子域作为子目录服务的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
这不应该发生:对不可能进行故障排除这不应该发生:对不可能进行故障排除May 15, 2025 am 10:32 AM

解决这些不可能的问题之一,这是您从未想过的其他问题的问题。

@KeyFrames vs CSS过渡:有什么区别?@KeyFrames vs CSS过渡:有什么区别?May 14, 2025 am 12:01 AM

@keyframesandCSSTransitionsdifferincomplexity:@keyframesallowsfordetailedanimationsequences,whileCSSTransitionshandlesimplestatechanges.UseCSSTransitionsforhovereffectslikebuttoncolorchanges,and@keyframesforintricateanimationslikerotatingspinners.

使用页面CMS进行静态站点内容管理使用页面CMS进行静态站点内容管理May 13, 2025 am 09:24 AM

我知道,我知道:有大量的内容管理系统选项可用,而我进行了几个测试,但实际上没有一个是一个,y'知道吗?怪异的定价模型,艰难的自定义,有些甚至最终成为整个&

链接HTML中CSS文件的最终指南链接HTML中CSS文件的最终指南May 13, 2025 am 12:02 AM

链接CSS文件到HTML可以通过在HTML的部分使用元素实现。1)使用标签链接本地CSS文件。2)多个CSS文件可通过添加多个标签实现。3)外部CSS文件使用绝对URL链接,如。4)确保正确使用文件路径和CSS文件加载顺序,优化性能可使用CSS预处理器合并文件。

CSS Flexbox与网格:全面评论CSS Flexbox与网格:全面评论May 12, 2025 am 12:01 AM

选择Flexbox还是Grid取决于布局需求:1)Flexbox适用于一维布局,如导航栏;2)Grid适合二维布局,如杂志式布局。两者在项目中可结合使用,提升布局效果。

如何包括CSS文件:方法和最佳实践如何包括CSS文件:方法和最佳实践May 11, 2025 am 12:02 AM

包含CSS文件的最佳方法是使用标签在HTML的部分引入外部CSS文件。1.使用标签引入外部CSS文件,如。2.对于小型调整,可以使用内联CSS,但应谨慎使用。3.大型项目可使用CSS预处理器如Sass或Less,通过@import导入其他CSS文件。4.为了性能,应合并CSS文件并使用CDN,同时使用工具如CSSNano进行压缩。

Flexbox vs Grid:我应该学习两者吗?Flexbox vs Grid:我应该学习两者吗?May 10, 2025 am 12:01 AM

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

轨道力学(或我如何优化CSS KeyFrames动画)轨道力学(或我如何优化CSS KeyFrames动画)May 09, 2025 am 09:57 AM

重构自己的代码看起来是什么样的?约翰·瑞亚(John Rhea)挑选了他写的一个旧的CSS动画,并介绍了优化它的思维过程。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。