将动态子域 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
我需要将使用旧 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