Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess子域重定向错误_.htaccess_Redirect - Fatal编程技术网

.htaccess子域重定向错误

.htaccess子域重定向错误,.htaccess,redirect,.htaccess,Redirect,问题: 如能深入了解如何修改.htaccess以解决下面详述的问题,将不胜感激 背景 支持网站位于support.domain.com。希望具有以下行为: https://support.domain.com 残余https://support.domain.com http://support.domain.com 重定向到https://support.domain.com http://domain.com/support 重定向到https://support.domain.com h

问题:

如能深入了解如何修改.htaccess以解决下面详述的问题,将不胜感激

背景

支持网站位于support.domain.com。希望具有以下行为:

https://support.domain.com 残余https://support.domain.com http://support.domain.com 重定向到https://support.domain.com http://domain.com/support 重定向到https://support.domain.com http://www.domain.com/support 重定向到https://support.domain.com https://domain.com/support 重定向到https://support.domain.com https://www.domain.com/support 重定向到https://support.domain.com 问题是观察到以下行为

https://support.domain.com 重定向到https://www.domain.com [错误] http://support.domain.com 重定向到https://www.domain.com [错误] http://domain.com/support 重定向到https://www.domain.com [错误] http://www.domain.com/support 重定向到https://www.domain.com [错误] https://domain.com/support 重定向到https://domain.com/support/ 预期页面为-support.domain.com[良好] https://www.domain.com/support 重定向到https://www.domain.com/support/ 预期页面support.domain.com[良好] 当前live.htaccess规则为:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,NE,R=301]
# End Enforce https

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#
#Domain re-direction
RewriteCond %{HTTP_HOST} ^domainnet\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domainnet\.com$ 
RewriteRule ^/?$ https\:\/\/www\.domain\.com [L,NE,R=301]
#
#Support page re-direction
RewriteRule ^justsupport/?$ https\:\/\/www\.domain\.com\/forsupport\/ [L,NE,R=301]
</ifModule>
结果

下面是修改后的解决方案按预期工作的证据

http://support.domain.com 现在重定向到https://support.domain.com [好] https://support.domain.com 是https://support.domain.com 不出所料[好] https://domain.com/support 现在重定向到https://support.domain.com [好] http://domain.com/support 现在重定向到https://support.domain.com [好] https://www.domain.com/support 现在重定向到https://support.domain.com [好] http://www.domain.com/support 现在重定向到https://support.domain.com [好] 这样做:

RewriteOptions inherit
# Enforce https 
# “IfModule” is not used as we want web-server to give error if “mod_rewrite.c” missing
RewriteEngine On 

RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^(/?support/?)$ [NC]
RewriteCond %{HTTP_HOST} !^(support\.domain\.com)$ [NC]
RewriteRule ^(.*)/?$ https://www.domain.com/$1 [L,NE,R=301]
# End Enforce https

#Domain re-direction
RewriteCond %{HTTP_HOST} ^(www\.)?domainnet\.com$ [NC]
RewriteRule ^ https://www.domain.com%{REQUEST_URI} [L,NE,R=301]
#end domain re-direction

#Support page
#RewriteCond %{HTTPS} off
RewriteCond %{SERVER_PORT} !443
RewriteCond %{HTTP_HOST} ^support\.domain\.com$ [NC]
RewriteRule ^ https://support.domain.com%{REQUEST_URI} [L,NE,R=301]

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule ^support/?$ https://support.domain.com/ [L,NC,NE,R=301]
#end Support page

#web support page re-direction
RewriteRule ^justsupport/?$ https://www.domain.com/forsupport/ [L,NE,NC,R=301]
#end web support page re-direction

你好,阿努巴瓦。您的解决方案最初并不完美。为使其适用于我的用例,对其进行了轻微修改。修改现在起作用了。如果我们用原始问题中置于解决方案下的修改版本更新您自己的脚本,这有关系吗。还是最好还是保持现状。。。
RewriteOptions inherit
# Enforce https 
# “IfModule” is not used as we want web-server to give error if “mod_rewrite.c” missing
RewriteEngine On 

RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^(/?support/?)$ [NC]
RewriteCond %{HTTP_HOST} !^(support\.domain\.com)$ [NC]
RewriteRule ^(.*)/?$ https://www.domain.com/$1 [L,NE,R=301]
# End Enforce https

#Domain re-direction
RewriteCond %{HTTP_HOST} ^(www\.)?domainnet\.com$ [NC]
RewriteRule ^ https://www.domain.com%{REQUEST_URI} [L,NE,R=301]
#end domain re-direction

#Support page
#RewriteCond %{HTTPS} off
RewriteCond %{SERVER_PORT} !443
RewriteCond %{HTTP_HOST} ^support\.domain\.com$ [NC]
RewriteRule ^ https://support.domain.com%{REQUEST_URI} [L,NE,R=301]

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule ^support/?$ https://support.domain.com/ [L,NC,NE,R=301]
#end Support page

#web support page re-direction
RewriteRule ^justsupport/?$ https://www.domain.com/forsupport/ [L,NE,NC,R=301]
#end web support page re-direction