htaccess Mod_Rewrite 从主域到子域

Posted

技术标签:

【中文标题】htaccess Mod_Rewrite 从主域到子域【英文标题】:htaccess Mod_Rewrite from Main Domain to SubDomain 【发布时间】:2016-07-06 17:25:48 【问题描述】:

我听说这个帖子 (.htaccess redirect all pages to new domain) 非常有用。但是,我的请求与这个原始请求有点不同。

上面的帖子谈到了从旧域重定向到新域,但是,我要求只将主域转发到子域。

这是一个问题 - 如何自动将所有请求从我的主域转发到子域。比如——

登陆网址:http://example.com 转发网址:http://sub.example.com

登陆网址:http://example.com?var=foo 转发网址:http://sub.example.com?var=foo

如果有人登陆我的转发 URL,我不希望他们再次被 301 重定向。简单来说,我不想使用一个规则,如果登陆,我总是重定向所有登陆 http://sub.example.com 的请求网址是一样的。

如果我遵循上述链接中的建议,我相信这会发生在我的情况下,因为我想从主域转发到子域。

这是我目前所拥有的,它正在做部分工作。它只会将我的一个域转发到另一个子域。但是,当有任何 URL 参数时它不起作用,它只是保持相同的旧 URL。

RewriteEngine On
RewriteCond %HTTP_HOST ^example\.com$ [NC]
RewriteCond %QUERY_STRING ^$
RewriteRule ^$ http://sub.example.com/? [R=301,NE,NC,L]

简单来说——当有http://example.com?var=foo 时我的代码没有反应,它保持原样。

任何指导都会很棒。

【问题讨论】:

【参考方案1】:

您需要删除一个条件并更改您的正则表达式。

RewriteEngine On
RewriteCond %HTTP_HOST ^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)/?$ http://sub.example.com/$1 [R=301,NE,NC,L]

清除您的浏览器缓存,然后尝试一下。让我知道它是如何工作的。

【讨论】:

很高兴我能帮上忙。

以上是关于htaccess Mod_Rewrite 从主域到子域的主要内容,如果未能解决你的问题,请参考以下文章

将 Codeigniter 项目从主域复制到子域

.htaccess 旧域到新域 301 重定向,但只有域,而不是页面

AWS Cloudfront + 负载均衡器,url 从主域更改为负载均衡器子域

.htaccess - 将旧网站重定向到主域,但也将一些内容重定向到主域的子域

HTACCESS-将辅助域重定向到主域

.htaccess:将主域重定向到https:// www,子域重定向到https://(不带www)