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 从主域到子域的主要内容,如果未能解决你的问题,请参考以下文章
.htaccess 旧域到新域 301 重定向,但只有域,而不是页面
AWS Cloudfront + 负载均衡器,url 从主域更改为负载均衡器子域