django - 创建用于域重定向的 htaccess 文件(部署在 Heroku 中的 Django 应用程序)

标签 django .htaccess ssl heroku redirect

情况:

我已经为部署在 Heroku 中的 Django 应用程序购买了一个特定的域,例如 'example.ch'。我还在 Heroku (ACM) 上创建了一个自动 SSL 证书。该证书对于 WWW 子域有效,即 ACM 状态显示“正常”。对于非 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 文件,必须将其存储在哪里以及内容如何?

非常感谢!

最佳答案

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

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

RewriteEngine ON
RewriteCond https !on
RewriteCond %{HTTP_HOST} ^(?:www\.)(.*)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,NE,L]

关于django - 创建用于域重定向的 htaccess 文件(部署在 Heroku 中的 Django 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65627691/

相关文章:

错误 500 的 Apache ErrorDocument 不起作用

php - WAMP 的远程访问重定向到重复的 url

php - 重写动态 url

python - 使用 ACME 客户端库请求特定挑战

django - 未显示 DeleteView 中的成功消息

python - 在 Django 中查询 ManyToMany 给我重复的结果

ssl - URL 的哪些部分受 TLS 保护?

mysql - Sequelize mysql ssl SequelizeConnectionError : ER_HANDSHAKE_ERROR: Bad handshake

django - 在 CI 期间在 Django 测试数据库中启用 PSQL hstore 扩展

django - 将请求传递给自定义 Django 模板加载器