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