.htaccess htaccess:如果不是在本地主机上,则强制使用https和www

.htaccess htaccess:如果不是在本地主机上,则强制使用https和www,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我在本地主机上工作,所以在mod_重写规则中需要此异常。目前,我可以在不在本地主机上时使用以下命令强制“www”: # Force www, if not in localhost RewriteCond %{HTTP_HOST} !=localhost RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 现在,我还想强制使用https(我的整个站点将使用https)。

我在本地主机上工作,所以在mod_重写规则中需要此异常。目前,我可以在不在本地主机上时使用以下命令强制“www”:

# Force www, if not in localhost
RewriteCond %{HTTP_HOST} !=localhost
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
现在,我还想强制使用https(我的整个站点将使用https)。如何将其添加到htaccess中

我试着让我的htaccess像这样,但这也迫使我的本地主机使用https:

# Force https, if not in localhost
RewriteCond %{HTTP_HOST} !=localhost    
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Force www, if not in localhost
RewriteCond %{HTTP_HOST} !=localhost
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
更新1: 我想我需要删除第一个
[R=301,L]

更新2:
如果我有这样一个URL:
https://scripts.domain.com
,我不希望它变成:
https://www.scripts.domain.com

在上一条规则上方添加这一行:

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]{3}$

你能详细说明你的正则表达式吗?您是否正在解决我在更新2中指定的问题?那我的https问题呢?它只会匹配像
domain.com
,第一个
[^.]+
匹配所有以至少一个或多个非点字符开头的字符,然后是点,最后是3个字符。我认为HTTPS是因为某种原因才起作用的。我将这些规则放在我的htaccess中,它不会重定向
http://localhost/
到https。你不想摆脱
[R=301,L]
,你要确保你的
HTTP\u主机实际上是
localhost
。为什么最后是3个字符?那我们呢?还是新西兰公司?等我将重新测试https问题。它应该可以工作了,对吗?@StackOverflowNewbie如果你想同时覆盖xx.xx TLD,那么把它改成:
([^.]{2,4}}.[^.]{2}.[^.]{2})
,这将覆盖TLD,比如
domain.jp
domain.co.jp
domain.us
domain.org
domain.info
等@JonLin你能帮我做这件事吗看起来很相似,但对我来说有点困难