为何子域名跳转至主域名?附.htaccess配置及场景示例
问题原因分析及解决方案
嘿,咱们来拆解一下你遇到的子域名跳转问题,核心其实出在规则匹配和实际域名不对应上:
先理清楚当前规则的逻辑
你现在的.htaccess规则是这样的:
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC] RewriteCond %{HTTP_HOST} !^app\.mydomain\.com$ [NC] RewriteRule ^(.*)$ http://www.mydomai.com./$1 [R=permanent,L]
这里的两个RewriteCond是逻辑与(AND)的关系,简单说就是:
只有当请求的域名既不是www.mydomain.com,同时也不是app.mydomain.com的时候,才会触发后面的跳转规则,把请求转到主域名。
为什么你的子域名会被跳转?
你的实际子域名是app.freewebcart.com,这个域名完全不匹配规则里写的app.mydomain.com,同时也不是主域名www.mydomain.com,刚好满足两个RewriteCond的触发条件,所以自然就被强制跳转到主域名了。
另外还要提个小细节:你的RewriteRule里主域名拼写有个错误——www.mydomai.com.多了个末尾的点,应该是www.mydomain.com,这个小问题也可能导致跳转异常。
修正后的规则
把第二个RewriteCond里的app.mydomain.com替换成你实际的子域名app.freewebcart.com,同时修正主域名的拼写错误,修改后的规则如下:
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC] RewriteCond %{HTTP_HOST} !^app\.freewebcart\.com$ [NC] RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=permanent,L]
这样修改后,只有当请求的域名既不是你的主域名,也不是目标子域名时,才会触发跳转,你的app.freewebcart.com子域名请求就不会被强制跳转了。
内容的提问来源于stack exchange,提问作者jilin james
相关产品推荐
相关产品推荐

