我将我的网站设为HTTPS“https://website.com”,因此我在通过HTTP访问网站时添加了一个htaccess文件以重定向到https。
这是我从SO获得的代码。
<%= select_tag '<some_id>', options_from_collection_for_select(@tenants, :id, :tenant_text_value, current_tenant.try(:id)) %>
<script>
$(function(){
$('#team_id').bind('change', function () {
var url = $(this).val()
if (url) {
window.location.href(url);
}
return false;
});
});
</script>
当我访问http://website.com时,它会重定向到https://www.website.com这是正确的。但是当我访问http://www.website.com时,它会重定向到https://www.website.com/index.php
网址中有RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
我不喜欢。对此有什么可行的解决方案吗?
答案 0 :(得分:1)
让您的代码如下:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
您不需要多个RewriteEngine On
行并在内部重写规则之前保留重定向规则,如图所示。
确保在测试前清除浏览器缓存。