htaccess 将域重定向到 https,带参数的子域重定向到 http
htaccess redirect domain to https, subdomain with parameter to http
我正在尝试这样做:
为我的主域强制使用 https。
http 或 https://www.domain.com
-> https://domain.com
http 或 https://domain.com
-> https://domain.com
这是域的 htaccess 编码
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
这工作正常
但不适用于子域
我想要的结果是
https://www.domain.com/index.php?username=abc => http://abc.domain.com
http://www.domain.com/index.php?username=abc => http://abc.domain.com
并且总是删除 www 和 https 到 http。
但不知道如何为子域编写 htaccess 代码
如果请求 index.php,这将首先检查您是否需要根据查询字符串中的用户名参数重定向到子域。然后,当重写到该子域时,它将复制整个查询字符串,但在保留所有其他参数的同时从中省略用户名参数。
第二部分将检查您的主域是否包含 www,然后在其上强制执行 https(如果我们尚未决定重定向到子域)。
RewriteEngine On
#match either the www subdomain or no subdomain
RewriteCond %{HTTP_HOST} ^(?:www.)?(?:domain\.com)$
#which request index.php
RewriteCond %{REQUEST_URI} ^/index\.php
#and contain a username paramater
RewriteCond %{QUERY_STRING} ^(.*?)(?:^|&)username=([^&]+)(.*?)$
#then rewrite them to username.domain.com without the username parameter
RewriteRule ^ http://%2.domain.com%{REQUEST_URI}?%1%3 [R,QSA,L]
#match either the www subdomain or no subdomain
RewriteCond %{HTTP_HOST} ^(?:www.)?(?:domain\.com)$
#which was requested without https
RewriteCond %{HTTPS} off
#then redirect to https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
我正在尝试这样做:
为我的主域强制使用 https。
http 或 https://www.domain.com
-> https://domain.com
http 或 https://domain.com
-> https://domain.com
这是域的 htaccess 编码
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
这工作正常
但不适用于子域
我想要的结果是
https://www.domain.com/index.php?username=abc => http://abc.domain.com
http://www.domain.com/index.php?username=abc => http://abc.domain.com
并且总是删除 www 和 https 到 http。
但不知道如何为子域编写 htaccess 代码
如果请求 index.php,这将首先检查您是否需要根据查询字符串中的用户名参数重定向到子域。然后,当重写到该子域时,它将复制整个查询字符串,但在保留所有其他参数的同时从中省略用户名参数。
第二部分将检查您的主域是否包含 www,然后在其上强制执行 https(如果我们尚未决定重定向到子域)。
RewriteEngine On
#match either the www subdomain or no subdomain
RewriteCond %{HTTP_HOST} ^(?:www.)?(?:domain\.com)$
#which request index.php
RewriteCond %{REQUEST_URI} ^/index\.php
#and contain a username paramater
RewriteCond %{QUERY_STRING} ^(.*?)(?:^|&)username=([^&]+)(.*?)$
#then rewrite them to username.domain.com without the username parameter
RewriteRule ^ http://%2.domain.com%{REQUEST_URI}?%1%3 [R,QSA,L]
#match either the www subdomain or no subdomain
RewriteCond %{HTTP_HOST} ^(?:www.)?(?:domain\.com)$
#which was requested without https
RewriteCond %{HTTPS} off
#then redirect to https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]