Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
Apache .htaccess重定向所有tld';s到另一个并强制https_Apache_.htaccess_Redirect_Https_Url Redirection - Fatal编程技术网

Apache .htaccess重定向所有tld';s到另一个并强制https

Apache .htaccess重定向所有tld';s到另一个并强制https,apache,.htaccess,redirect,https,url-redirection,Apache,.htaccess,Redirect,Https,Url Redirection,您好,我尝试将我的所有顶级域重定向到另一个域,这已经起作用了,但我也想强制使用https。使用以下代码,它可以很好地用于所有顶级域,如“.de”、““.net”等 RewriteEngine On RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC] RewriteRule ^(.*) https://domain.com/$1 [R=301,NE,L] 我的问题是我还想强制我的主tld=>'.com'使用https 好了,我们到了: Rew

您好,我尝试将我的所有顶级域重定向到另一个域,这已经起作用了,但我也想强制使用https。使用以下代码,它可以很好地用于所有顶级域,如“.de”、““.net”等

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteRule ^(.*) https://domain.com/$1 [R=301,NE,L]
我的问题是我还想强制我的主tld=>'.com'使用https

好了,我们到了:

RewriteEngine On
RewriteCond (http://) !^(www\.)?domain\.com$ [NC]
RewriteRule ^(.*) https://domain.com/$1 [R=301,NE,L]
对我来说,这不起作用。我收到“重定向太多”错误。我现在的问题是,是代码/重定向还是我的提供商的服务器配置有其他问题?我注意到了“太多重定向”错误,直到现在我尝试了从“http://”重定向到“https://”的任何方法,我尝试了很多不同的方法

试试看:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteRule ^(.*) https://domain.com/$1 [R=301,NE,L]
添加“或”条件,以便在没有HTTPS或域不同时重定向

(http://)
不是一个变量,它是一个文本“http://”,显然永远不会匹配
^(www\.)?domain\.com$
,这就是为什么该条件始终为真

由于您使用的是cloudflare,它在内部路由请求(非HTTPS),因此不能使用
%{HTTPS}
变量,您需要查看转发协议:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteRule ^(.*) https://domain.com/$1 [R=301,NE,L]
尝试:

添加“或”条件,以便在没有HTTPS或域不同时重定向

(http://)
不是一个变量,它是一个文本“http://”,显然永远不会匹配
^(www\.)?domain\.com$
,这就是为什么该条件始终为真

由于您使用的是cloudflare,它在内部路由请求(非HTTPS),因此不能使用
%{HTTPS}
变量,您需要查看转发协议:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteRule ^(.*) https://domain.com/$1 [R=301,NE,L]

我测试了它,但我得到了错误“ERR\u TOO\u MANY\u REDIRECTS”。我的提供商(apache)的设置是否可能有问题。我还想提到我使用了Cloudflare,但这不是问题的根源,或者我错了?(注意:在测试之前,我总是清除我的缓存等,所以这不会是我的浏览器造成的问题)@user3714751是的,使用cloudflare或aws会有所不同,因为浏览器与cloudflare对话SSL,但cloudflare不会与服务器对话SSL。查看上面的编辑我也测试了上面的编辑,但我得到相同的错误“ERR\u TOO\u MANY\u REDIRECTS”。我已将Cloudflare设置为使用SSL证书,其设置为:flexible。这意味着,如果我的服务器上没有自己的ssl证书,他们会给我一个,因此我不需要购买ssl证书,这是非常好的,因为我可以在Cloudflare上花费的钱保护了我的站点,也给了我一些其他优势。因此,这可能也改变了情况?@user3714751显然cloudflare希望您使用
%{HTTP:CF Visitor}'方案:“HTTP”
:非常感谢您的帮助。是的,看来我只是想通过我的httaccess让它工作,我没有在cloudflare上搜索解决方案。再次感谢你的提示,我想我现在可以开始工作了。我将把你的答案标记为解决方案。我测试了它,但我得到错误“ERR\u TOO\u MANY\u REDIRECTS”。我的提供商(apache)的设置是否可能有问题。我还想提到我使用了Cloudflare,但这不是问题的根源,或者我错了?(注意:在测试之前,我总是清除我的缓存等,所以这不会是我的浏览器造成的问题)@user3714751是的,使用cloudflare或aws会有所不同,因为浏览器与cloudflare对话SSL,但cloudflare不会与服务器对话SSL。查看上面的编辑我也测试了上面的编辑,但我得到相同的错误“ERR\u TOO\u MANY\u REDIRECTS”。我已将Cloudflare设置为使用SSL证书,其设置为:flexible。这意味着,如果我的服务器上没有自己的ssl证书,他们会给我一个,因此我不需要购买ssl证书,这是非常好的,因为我可以在Cloudflare上花费的钱保护了我的站点,也给了我一些其他优势。因此,这可能也改变了情况?@user3714751显然cloudflare希望您使用
%{HTTP:CF Visitor}'方案:“HTTP”
:非常感谢您的帮助。是的,看来我只是想通过我的httaccess让它工作,我没有在cloudflare上搜索解决方案。再次感谢你的提示,我想我现在可以开始工作了。我将把你的答案标记为解决方案。