1

情况

我已经购买了一个特定的域,比如说'example.ch'我部署在 Heroku 中的 Django 应用程序。我还在 Heroku (ACM) 上创建了一个自动 SSL 证书。该证书对 WWW 子域有效,即 ACM 状态显示“OK”。对于非WWW根域它失败了,所以我删除了Heroku上的根域条目。

问题

  • 当我'https://www.example.ch'在浏览器中输入时,我找到了我的安全网页,一切都很好。
  • 当我'www.example.ch'在浏览器中输入时,我找到了我的网页,但它并不安全
  • 当我'example.ch'在浏览器中输入时,找不到该网页。

目标:我想在浏览器中键入'www.example.ch'以及'example.ch'始终重定向到'https://www.example.ch'.

方法(到目前为止)

我的主机 (swizzonic.ch) 不允许“别名”记录。'A' 记录是可能的,但 Heroku 不支持(https://help.heroku.com/NH44MODG/my-root-domain-isn-t-working-what-s-wrong)。Swizzonic 支持告诉我使用 htaccess 文件进行重定向。

据我所知,我必须相应地扩展我的中间件(?)。请注意,我使用 SSL 重定向的常用选项 ( SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https'), SECURE_SSL_REDIRECT = True, SESSION_COOKIE_SECURE = True, CSRF_COOKIE_SECURE = True)。

如何创建 htaccess 文件,我必须将其存储在哪里以及内容的外观如何?

提前谢谢了!

4

1 回答 1

2

您能否尝试在您的 .htaccess 文件中遵循规则。请确保您的 .htaccess 文件工作正常(要启用它,您可以查看其文档)。这会将每个非 http 请求转换为带有/不带 www 域名的 https。

请在测试您的 URL 之前清除您的浏览器缓存。

RewriteEngine ON
RewriteCond https !on
RewriteCond %{HTTP_HOST} ^(?:www\.)(.*)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,NE,L]
于 2021-01-08T11:03:10.377 回答