首页 > 解决方案 > 如何将所有流量重定向到除主页之外的新域

问题描述

因此,我试图将使用 htaccess 访问其他页面的流量从一个域重定向到一个新的子域,但我想将流量保持在那里的主页。

RewriteEngine On

RewriteCond %{HTTP_HOST} ^olddomain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$

RewriteRule ^/?$ "http\:\/\/newsubdomain\.domain\.com\/" [R=301,L]

这只是将所有内容重定向到新的子域。这就是我需要帮助的地方,我怎样才能保持来到 olddmain.com 主页的流量并将查询重定向到 olddomain/post 并让它们转到 newsubdomain.domain.com/post

谢谢

标签: apache.htaccessredirectmod-rewrite

解决方案


这只是将所有内容重定向到新的子域。

不,它没有。(如果所有内容都被重定向,那么要么是其他东西在做,要么你看到的是缓存的重定向。)

发布的指令实际上与您尝试做的完全相反。这些指令仅重定向主页(即对文档根目录的请求)。

要重定向除主页之外的所有内容,您可以在.htaccess文件顶部执行以下操作:

# Redirect everything except the homepage
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com [NC]
RewriteRule !^$ https://newsubdomain.domain.com%{REQUEST_URI} [R=301,L]

RewriteRule 模式 !^$匹配除根(URL 路径)之外的所有内容。

您需要在测试前清除浏览器缓存。

首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。

补充说明:

  • RewriteRule 替换字符串(第二个参数)中不需要反斜杠转义冒号、斜杠和点- 这是一个“普通”字符串,而不是正则表达式。(这种不必要的转义是使用 cPanel 的“重定向”生成的典型尝试。)

  • 我认为这应该是 HTTPS,而不是 HTTP?

  • 这两个条件RewriteCond指令)可以合并为一个。


推荐阅读