Django 使用http到https重定向和wildard子域将www重定向到非www

Django 使用http到https重定向和wildard子域将www重定向到非www,django,apache,ubuntu,Django,Apache,Ubuntu,我刚刚安装了SSL证书,但当访问我网站的www域时,它现在显示Apache2 Ubuntu默认页面。如何使用http-->https和*子域将www重定向到非www <VirtualHost *:80> ServerName clearpath.site ServerAlias *.clearpath.site ServerAdmin webmaster@localhost DocumentRoot /var/www/h

我刚刚安装了SSL证书,但当访问我网站的www域时,它现在显示Apache2 Ubuntu默认页面。如何使用http-->https和*子域将www重定向到非www

<VirtualHost *:80>
        ServerName clearpath.site
        ServerAlias *.clearpath.site
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine on
RewriteCond %{SERVER_NAME} =clearpath.site [OR]
RewriteCond %{SERVER_NAME} =*.clearpath.site
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

ServerName clearpath.site
ServerAlias*.clearpath.site
服务器管理员webmaster@localhost
DocumentRoot/var/www/html
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
重新启动发动机
RewriteCond%{SERVER_NAME}=clearpath.site[或]
RewriteCond%{SERVER_NAME}=*.clearpath.site
重写规则^https://%{SERVER_NAME}%{REQUEST_URI}[END,NE,R=permanent]
#vim:syntax=apachets=4sw=4sts=4srnoet
端口443的me VH:

<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerName clearpath.site
        ServerAlias *.clearpath.site
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined


Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/
SSLCertificateKeyFile /etc/letsencrypt/
</VirtualHost>
</IfModule>


ServerName clearpath.site
ServerAlias*.clearpath.site
服务器管理员webmaster@localhost
DocumentRoot/var/www/html
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
Include/etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile/etc/letsencrypt/
SSLCertificateKeyFile/etc/letsencrypt/

感谢您的帮助。

这里有一个例子;我一直明确列出我的子域,但您应该能够使用通配符:


服务器名www.example.com
ServerAlias example.com subdomain.example.com其他.example.com
重定向永久/https://www.example.com/
超时300
斯伦金安
服务器名www.example.com
ServerAlias example.com subdomain.example.com其他.example.com
#设置为全局应用程序组
WSGIApplicationGroup%{GLOBAL}
#将授权传递给Django REST Framework令牌身份验证的WSGI应用程序
WSGIPassAuthorization On
WSGIDaemonProcess mysite master https python home=/path/to/django/mysite master/venv请求超时=300用户=apache组=apache进程=6
WSGIProcessGroup mysite主控https
WSGIScriptAlias//path/to/django/mysite master/config/wsgi.py进程组=mysite master https
要求所有授权
别名/static//path/to/django/mysite-master/static/

祝你好运

你好,谢谢你的回复!至于通配符子域,它们在这个项目中是必需的,因为我不知道每个租户的子域,也不能手动更新。你能告诉我这是什么意思吗:
Redirect permanent/https://www.example.com/
?为什么你的VH:80比我的短?当然<代码>重定向永久/https://www.example.com/表示“重定向”上述服务器列表中端口80 http上的所有传入请求。“永久”是指使用301永久重定向,而不是302临时重定向(搜索引擎将更新)<代码>/表示站点的根目录,
https://www.example.com
是重定向到的位置。至于为什么我的端口80 virtualhost更短:(1)我没有记录任何东西。(2) 我对所有流量使用Apache的重定向,而不是试图对正则表达式使用
mod_rewrite
。它使它更直观,而且不需要
DocumentRoot
,因为我们只是重定向,而不是从端口80交付任何HTML页面。
<VirtualHost *:80>
  ServerName www.example.com
  ServerAlias example.com subdomain.example.com other.example.com
  Redirect permanent / https://www.example.com/
</VirtualHost>

<VirtualHost *:443>
  TimeOut 300
  SSLEngine On

  ServerName www.example.com
  ServerAlias example.com subdomain.example.com other.example.com

  # Set to the lobal Application Group
  WSGIApplicationGroup %{GLOBAL}
  # Pass Authorizations through to the WSGI app for Django REST Framework Token Auth
  WSGIPassAuthorization On

  WSGIDaemonProcess mysite-master-https python-home=/path/to/django/mysite-master/venv request-timeout=300 user=apache group=apache processes=6
  WSGIProcessGroup mysite-master-https
  WSGIScriptAlias / /path/to/django/mysite-master/config/wsgi.py process-group=mysite-master-https
  <Directory /path/to/django/mysite-master/config>
    Require all granted
  </Directory>
  Alias /static/ /path/to/django/mysite-master/static/
</VirtualHost>