Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.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 重定向到HTTP非www到HTTPS www htaccess_.htaccess - Fatal编程技术网

.htaccess 重定向到HTTP非www到HTTPS www htaccess

.htaccess 重定向到HTTP非www到HTTPS www htaccess,.htaccess,.htaccess,我想用HTTPS协议从任何方向重定向到我们的站点,但有些重定向不起作用。我想要这个: http://www.site.co至https://www.site.co http://site.co至https://www.site.co 这是我的htaccess: RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] RewriteCond %{HTTP

我想用HTTPS协议从任何方向重定向到我们的站点,但有些重定向不起作用。我想要这个:

  • http://www.site.co
    https://www.site.co
  • http://site.co
    https://www.site.co
这是我的htaccess:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]
第二条规则是它不起作用。它将转到我们站点内的另一个方向,并且不会重定向到HTTPS站点。

尝试如下操作:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 
这里唯一真正的区别是,首先我们从非WWW重定向到WWW,然后我们检查HTTPS并重定向它

如果不起作用,请尝试以下方法:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 

如果您使用One.com作为Web主机,则应使用以下代码:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Prix的答案是有效的。为了使其更具动态性,让我们使用服务器名称和请求URI,而不是静态域名

RewriteEngine On
#we replace domain.com/$1 with %{SERVER_NAME}%{REQUEST_URI}.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*) https://www.%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

#here we dont use www as non www was already redirected to www.
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

这将用于www或非www 如果您尝试打开与www的链接,则url重定向到与www的https

Example : http://domain.com redirect to https://domain.com
或者,如果您试图打开非www链接,则url重定向到非www的https

Example : http://www.domain.com redirect to https://www.domain.com

RewriteEngine on

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

抱歉,我没有足够的理由发表评论,@prix的规则将带来不必要的重定向

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 
您可以尝试使用GTMETRIX,您将收到此消息

 "Avoid landing page redirects for the following chain of redirected URLs."

http://domain.com/
http://www.domain.com/
https://www.domain.com/
要防止这种情况,请转到第一条重写规则,并在http的末尾添加一个“s”。新规则集如下所示:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 
例如,我们应该


注意-您应该将example.com更改为您自己的域。

这是http到https非www到www重定向使用.htaccess

如果您想重定向到https和www,可以使用此代码

http到https重定向:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

重新启动发动机
重写cond%{HTTPS}!在…上
重写规则^(.*)$https://%{SERVER_NAME}%{REQUEST_URI}[R=301,L]
非www到www重定向:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

重新启动发动机
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
重写规则^(.*)$https://www.%{HTTP_HOST}/$1[R=301,L]

如果要使用booth功能,请分别放置上述所有代码

只需将以下内容放入
.htaccess
文件中即可

 RewriteEngine on

 RewriteCond %{SERVER_PORT} 80 
 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
我用这个:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [END,NE,R=permanent]
尝试以下方法:

# Redirect 301 all to https://www
<IfModule mod_rewrite.c>
   RewriteCond %{HTTPS} off [OR]
   RewriteCond %{HTTP_HOST} !^www\. [NC]
   RewriteCond %{HTTP_HOST} ^(.*)$  [NC]
   RewriteRule (.*) https://www.example.com/$1 [L,R=301]
</IfModule>
顺便说一句,如果您使用cloudflare,只需创建pagerules将301全部重定向到https和www版本

创建页面规则 充满

example.com/*
选择设置转发url,然后选择301并填写此

https://www.example.com/$1

保存它,所有内容都将重定向到https和www版本。

我有一个asp.net网站,主机提供商不支持IIS重写模块。我已测试了所有这些方法,只有此代码向woorank.com提供确认信息,这可能对其他.net开发人员有用:

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301]

可能重复感谢@Prix的评论。我尝试过那种反应,但对我不起作用。我不知道到底是什么问题。第二条规则重定向到哪里?@RaviThapliyal它不是重定向。它显示了一个页面中介,上面说:“这不是官方页面。我们重定向到…”5秒钟后重定向到https页面。页面为:。为了显示错误,我说你可以进入Hi@Prix,谢谢你的回答,但不幸的是,我仍然不工作。可能是配置虚拟主机的问题。可能是???@AnibalMauricio你确定你的htaccess或php上没有其他任何东西会导致这种情况吗?我刚刚发现该页面是apache的默认页面,所以问题一定是虚拟主机配置,对吗?@AnibalMauricio如果文档根不同,那么可能是。第二个选项在我的情况下效果更好。我在OpenCart中使用过它。非www重定向到https+www,和
https://site.tld
重定向到
https://www.site.tld
。但是如果我的URL是
https://example.com/page
它不会重定向到WWW.Any ideas?这适用于具有类似路径url(如WWW.example.com/page one)的angular项目。我不确定这会在现有答案上添加什么,但您有什么理由这样做吗不能只使用example.com和www.example.com?
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301]