... MAYBE-dup 答案确实解决了我的问题,但问题没有。
做两件事:
保留子域之前
之后保持路径
.htaccess
我在 SE 或网络上的其他地方都找不到 ONE或 Apache 配置:
通过 Apache.htaccess
重写,转发旧域,但保持两者相同subdomain
AND path/after
。
从:
samesubdomain.
domain1.tld1
/same/path
至:
samesubdomain.
domain2.tld2
/same/path
我有很多子域和尾随地址。我正在迁移一个旧网站,但需要我的旧订阅者和他们的页面仍然可以在新域上工作。
非但关闭重复:(答案解决了我的问题,但问题本身并没有描述我的问题,但这也解决了我的问题。)
感谢MAYBE-dup answer,对于子域,我目前有:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+\.)?domain1.com$ [NC]
RewriteRule ^ http://%1domain2.com%{REQUEST_URI} [R=301,L]
...现在,我需要在the/path
不与此代码冲突的情况下添加一半。
尽管链接的问题没有具体说明这一点,但代码实际上也复制了 URL 路径(和任何查询字符串)。尽管无可否认,答案没有任何解释。
假设:
domain1.tld1
(没有子域)不会重定向到domain2.tld2
.在根
.htaccess
文件顶部附近:该
RewriteCond
指令从请求中捕获子域。替换中的%1
反向引用是对捕获的子域(即。)的反向引用。RewriteRule
([^.]+)
反向引用包含由模式
$1
捕获的 URL 路径,即。.RewriteRule
(.*)
请注意,我特别省略了CondPattern
$
上的尾随(字符串结尾锚)以匹配以点结尾的 FQDN。任何查询字符串都原封不动地传递。
请注意,这目前是 302(临时)重定向。始终使用 302 进行测试以避免缓存问题。如果您之前使用 301s 进行过测试,那么您需要确保您已清除浏览器缓存。
代码已经包含 URL-path 部分。这就是替换字符串
%{REQUEST_URI}
中的部分。服务器变量包含完整的 URL 路径。这只是做与上面相同的事情的另一种方式——我使用了反向引用。(请注意,服务器变量包含斜杠前缀,而我使用的反向引用不包含,因此替换字符串中的斜杠不同。)RewriteRule
REQUEST_URI
$1
REQUEST_URI
此代码在
.com
.请注意,此解决方案使子域可选。它将重定向
domain1.com
(无子域)到domain2.com
.