将动态子域 URL 重定向到其动态站点 URL

Redirect dynamic subdomain URL to its dynamic site URL

我需要将使用旧 link 的用户重定向到子域到新的 link,该子域是使用 link.

中的信息动态生成的

例如:

旧 Link 将如下所示:

subdomain-2013.old-domain.com/data/process/aqs-2d3f4f5g-fgtgyy-uunb.xml

要构建新的 link,我需要子域中提供的年份和文件名。 (年份会变,不是一成不变的)。

新 Link:

new-domain.com/2013/data/process/aqs-2d3f4f5g-fgtgyy-uunb.xml

这是怎么做到的?这是用 .htaccess 完成的吗?

您可以使用根 .htaccess 文件顶部附近的 mod_rewrite 这样做:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^subdomain-(\d{4})\.(example\.com) [NC]
RewriteRule ^data/process/([a-z0-9-]+\.xml)$ https://%2/%1/ [R=301,L]

其中 %1%2 是对前面 CondPattern 的反向引用,而 </code> 是对 [= 中捕获组的反向引用16=] <em>模式</em>.</p> <p>不过,我刚刚注意到您标记了问题 <code>wpengine。虚拟主机“WP Engine”不再支持 .htaccess 配置文件。参考:https://wpengine.com/support/htaccess-deprecation/ - 更新:尽管此标签似乎已从问题中删除。


更新: 如果目标域不同(稍后对问题进行更改),则需要在 替换[=37= 中进行硬编码] 字符串,替换 %2 反向引用。例如:

RewriteCond %{HTTP_HOST} ^subdomain-(\d{4})\.old-domain\.com [NC]
RewriteRule ^data/process/([a-z0-9-]+\.xml)$ https://new-domain.com/%1/ [R=301,L]

问题中的示例只是将 .xml 文件名传递给目标 URL,而不是传递前面的 URL-path,这正是上面的规则所做的。

我找到了两个有助于解决此问题然后测试解决方案的网站,链接如下。

解决方法如下:

 RewriteCond %{HTTP_HOST} ^.*(\d{4})\.(.*?)$
 RewriteRule . http://www.new-domain.com/%1%{REQUEST_URI} [R=301,L]

https://regex101.com/r/XFMOwW/1

https://htaccess.madewithlove.com?share=3ea90fee-86df-488e-9346-b0797c26a3f1