访问。将排除的子文件夹重定向到域的 https 版本,其他所有内容都被重定向到另一个域

Posted

技术标签:

【中文标题】访问。将排除的子文件夹重定向到域的 https 版本,其他所有内容都被重定向到另一个域【英文标题】:Htaccess. Redirect excluded subfolder, to https version of domain and everything else gets redirected to another domain 【发布时间】:2019-07-15 12:13:06 【问题描述】:

我有一个多域网站,

这意味着根据域显示内容的版本,

所以现在我有域 chiname.comgreatwall.com 当用户登陆chiname.com 时,会被重定向到https://www.greatwall.com,除了两个文件夹/landing/marketing 保留在chiname.com 上,但希望它位于https 版本的chiname.com 上。

我尝试添加 rewriteRule,但对我不起作用

RewriteEngine On
RewriteCond %HTTP_HOST ^chiname.com$ [NC]
RewriteCond %REQUEST_URI !^/(landing|marketing)
RewriteRule ^(landing/.*)$ https://www.chiname.com/$1 [R=301,L]
RewriteRule ^(marketing/.*)$ https://www.chiname.com/$1 [R=301,L]
RewriteRule ^(.*)$ https://www.greatwall.com/$1 [R=301,L]

【问题讨论】:

【参考方案1】:

您可以使用以下 2 条重定向规则:

RewriteEngine On

RewriteCond %HTTPS !on
RewriteCond %HTTP_HOST ^(?:www\.)?chiname\.com$ [NC]
RewriteRule ^(landing|marketing) https://%HTTP_HOST%REQUEST_URI [R=301,L,NC,NE]

RewriteCond %HTTP_HOST ^(?:www\.)?chiname\.com$ [NC]
RewriteCond %REQUEST_URI !^/(landing|marketing) [NC]
RewriteRule ^ https://www.greatwall.com%REQUEST_URI [R=301,L,NC,NE]

确保使用新的浏览器进行测试。

【讨论】:

在 Chrome 开发工具中使用 缓存禁用 进行测试,并在“网络”选项卡中检查您获得的 301/302 重定向 URL 是什么。 在禁用缓存的隐身模式下在 chrome 中进行测试,我得到所有 301 错误,我得到的所有 URL 都是 https://chiname.com/landing/*,最后它失败了。你想要我的完整 htaccess 文件吗?? 是的,我建议使用完整的 .htaccess 编辑您的问题,并告诉我您的托管信息,例如Apache 版本、DocumentRoot、是否存在任何代理服务器等

以上是关于访问。将排除的子文件夹重定向到域的 https 版本,其他所有内容都被重定向到另一个域的主要内容,如果未能解决你的问题,请参考以下文章

将 IP 重定向到域

使用特定域的 .htaccess 重定向到 HTTPS

NGINX将所有子文件夹重定向到域根目录

将流量重定向到域

NGINX 中的 IP 地址到域重定向

.htaccess - 尝试强制 https 时出现“重定向过多”