我一直在寻找完美的301重定向。但我发现了这么多的解决方案,不知道什么是最好的。
这是我想做的
最佳实践。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
</IfModule>
这是我喜欢的代码。至少现在是联合利华。
替代方法
我还发现了许多其他方法可以从HTTP
重定向到HTTPS
。例如:
1.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
错过一步?这里没有[R=301,L]
?
2.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
不同的顺序通常更好吗?
我应该用吗
RewriteRule ^(.*)$
而不是
RewriteRule (.*)
?
3.
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L,NE]
使用完整域名是否有任何性能优势?我真的需要NE
?([R=301,L,NE]
与[L,R=301]
)
所以,我对所有专家的问题是:从HTTP
重定向到HTTPS
和从重定向到
HTTPS://
的最佳(执行)方式是什么?
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
无需更改,只需复制和粘贴即可。
所以,冷凝,这变成;
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L,NE]
如果你看到任何虫子,请告诉我
从您最喜欢的解决方案开始:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
</IfModule>
在处理非https URL的部分中,您将重定向到%{HTTP\u HOST}
。然后,如果您的主机名以“www”开头,则必须进行第二次重定向才能将您从https://www.domain.tld到https://domain.tld这应该是你的最终目的地。
您可以通过使用
RewriteRule ^(.*)$ https://domain.tld/%{REQUEST_URI} [L,R=301]
直接在第一条规则中。第二条规则将只适用于试图访问https://www.domain.tld
的客户端。
备选案文1。由于相同的原因(缺少HTTP\u主机
可能是www.domain.tld
)以及缺少[L,R=301]
的情况,不起作用。这是必要的,因为您不会像在其他类型的重写规则中那样在此处重写URL。您正在请求客户端更改其请求的类型-这就是您向他发送HTTP代码301
的原因。
关于匹配部分的ReWriteLaw
本身,您应该是一致的:如果您想要捕获URI的部分,您将使用带括号的正则表达式。因为您实际上是作为一个整体在这里使用它,所以只需为“任何东西”使用一个替代方案就可以了,比如^
,然后稍后使用%{REQUEST_URI}
。如果您使用一些捕获(即(some_regex)
,您应该在目标中使用1美元
(或任何您要引用的内容)来引用它。
在第三种选择中,同样缺少www https。
您可以检查https是否关闭,或者域名是否在一个规则中包含一个前导的“www”,但是重写条件与“和”隐式连接。
因此,它应该是:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://domain.tld%{REQUEST_URI} [R=301,L,NE]
NE对于将GET参数之类的内容传递到新URI是必需的,请参阅:
http://httpd.apache.org/docs/2.4/rewrite/flags.html
我们使用拉维5。要将http连接重定向到https,请使用中间件HttpsProtocol。 在我们的4个测试用例中,只有1个正确工作(最后一个重定向)。其他3种情况的中间件添加了url extra index.php。 http://www.aqualink.az/index.php ---
问题内容: 在python中,您通常使用PEP 8-Python代码样式指南 作为您的编码标准/准则吗?您还有其他更喜欢的正式标准吗? 问题答案: “在python中,您通常使用PEP 8-Python代码样式指南作为您的编码标准/准则吗?您是否还需要其他正式的标准?” 如您所提到的,请遵循PEP 8作为主要文本,并遵循PEP 257 作为文档字符串约定 与Python样式指南一起,建议您参考以下
问题内容: 我如何在Spring Webflux中配置http-> https重定向?我需要将所有请求重定向到(据我所知,任何请求都应具有http状态响应,并带有更改http-> https)。在文档中未找到有关此信息的任何信息。我找到了这个答案,但它与tomcat有关。我有净值。 问题答案: 我找到了方法,希望对您有所帮助:
如何在spring WebFlux中配置HTTP->HTTPS重定向?我需要将所有请求重定向到(根据我的理解,任何请求都应该具有http状态响应,并更改HTTP->HTTPS)。在文档中没有找到任何关于它的信息。我找到了这个答案,但它与Tomcat有关。我有奈蒂。
我有一个域有3个子域: 在我的nginx上有以下3个配置: API null
我已经在我的 Web 应用程序中配置了 SSL。我已经按照所需的步骤在我的 Tomcat 中安装了证书。 我一直关注的导师是https://www.mulesoft.com/tcat/tomcat-security 我已经强制使用 https over http,这意味着任何对 http 的请求都将转发到 https。我在服务器中进行了以下更改.xml 查看更多:https://www.mules