【发布时间】:2021-07-26 00:18:36
【问题描述】:
我最近重建了一个最初具有 2 个子域结构的网站(每种语言 1 个) 现在我想将这些旧/已删除子域中的所有 URL 301 到根域。
我不想对根域的所有 URL 进行 301 处理,而是需要将旧子域中的特定 URL 进行 301 处理到根域上的新 URL,如下所示:
en.mydomain.com/about-us/ 301 到 mydomain.com/about-us/
es.mydomain.com/about-us/ 301 到 mydomain.com/about-us/
每个子域总共可能有大约 30 个 URL,我需要手动将它们 301 设置为根域上的新 URL
我需要重新创建旧的子域吗?或者这可以通过根域来实现吗?
我还需要为所有 URL 使用 www、非 www、http、https 的通配符。
【问题讨论】:
-
取决于您的域的默认主机。如果那是您的“根域”(正如您所说的那样),那么您可以使用
RewriteCond指令实现重定向规则,以找出实际请求的主机名(“子域”)。 -
我已更改主机。旧的子域托管在不同的虚拟主机上。我新建的站点只使用根域,mydomain.com 托管在一个新的虚拟主机上。
-
我指的不是您的主机,而是默认主机。 http 服务器配置“主机”,即所谓的“域”或“子域”。这些实际上是http主机。通常,其中一台主机用作“默认主机”。这是 http 服务器选择的一种配置,用于响应请求无法找到匹配主机配置的主机的请求。因此,如果您没有为这些“子域”定义任何主机,那么这些请求将由该默认主机响应。这就是您要实现重定向规则的地方。
-
开始阅读有关该主题的一些内容可能对您有意义。您想了解“虚拟主机”、“大规模虚拟主机”、“主机别名”,尤其是 apache 重写模块提供的功能。我建议您开始深入研究文档。作为开源软件的典型代表,它具有卓越的品质并带有很好的示例:httpd.apache.org/docs/current/vhosts
-
感谢您的时间和回答,但现在我对所有事情都感到困惑。我以为我在我的主题中已经很清楚了,我想将我的 2 个子域 301 设置为我的“默认主机”或其他任何名称。我应该重新创建我的旧子域并在这两个中添加一个 .htaccess,还是我可以在我的“默认主机”中添加一个 .htaccess?我以前做过很多 301,但一直使用一些 301 插件用于 wordpress,并且总是在 1 个单个域内,不像这次使用子域
标签: .htaccess subdomain http-status-code-301