使用.htaccess重定向到HTTPS版本

时间:2016-02-08 14:30:37

标签: .htaccess https

我需要修改我的.htaccess文件,将所有网址重定向到HTTPS版本而不使用" www"。

class MeasuredControllerAdmin( admin.ModelAdmin):
    list_display = ('tem0', 'tem1', 'tem2')

    def tem2(self, obj): 
        ...............   
        return obj.tempraturemeasure.filter(deviceindex="2").latest("senddate").temperature
        .......

    def tem1(self, obj): 
        ...............   
        return obj.tempraturemeasure.filter(deviceindex="1").latest("senddate").temperature
        .......

    def tem0(self, obj): 
        ...............   
        return obj.tempraturemeasure.filter(deviceindex="0").latest("senddate").temperature
        .......

    def get_queryset(self, request):
        qs = super(MeasuredControllerAdmin, self).get_queryset(request)
        qs = qs.extra(
        select = { 
            "tem2" : "<sub query for selecting the latest temp2>"),
            "tem1" : "<sub query for selecting the latest temp1>"),
sub query for query for selecting the latest temp1"),
            "temp0:"<sub query for selecting the latest temp0>")})

tem2.admin_order_field = 'tem2'
tem1.admin_order_field = 'tem1'
tem0.admin_order_field = 'tem0'

这就是我的.htaccess文件的样子:

http://example.com --> https://example.com
http://www.example.com --> https://example.com
https://www.example.com --> https://example.com

我需要对.htaccess进行哪些修改才能在没有&#34; www&#34;的情况下转发到HTTPS?

1 个答案:

答案 0 :(得分:1)

这取决于您对当前代码的处理方式。这看起来像一个名为redirect的文件,但是试图从SEO友好的URL显示一个php页面。所以我认为这可能让人感到困惑。

无论如何,要做你需要做的事情并在没有www的情况下强迫https,你只需要再做一个规则。

此外,您的第二条规则需要在RewriteRule测试字符串中使用两个捕获组,因为您需要使用$ 1和$ 2反向引用的两个不同值。

RewriteEngine On

#rediect www to non www and/or http to https --- all combinations.
RewriteCond %{HTTP_HOST} !^example\.com [NC,OR]
RewriteCond %{HTTPS} !^on
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/(.+)/?$ redirect.php?id=$1&page=$2 [QSA,L]

因此,第二条规则适用于这样形成的网址。

https://example.com/123/pagename