【问题标题】:HTTP redirect to HTTPS while keeping angular routes (.htaccess)HTTP 重定向到 HTTPS,同时保持角度路由 (.htaccess)
【发布时间】:2017-08-15 04:03:53
【问题描述】:

我想要做的就是阻止网站使用 http 而不是 https。这是我的 .htaccess 配置。只有 www.mywebsite.com 和 mywebsite.com 不使用 https。角度路线也可以。如果我写 mywebsite.com/signup 它也会转到 https。我应该怎么做才能将所有场景重定向到 https ?

场景:

www.website.com -> 不是 https

website.com -> 不是 https

website.com/signin -> https

www.website.com/signin -> https

RewriteEngine On

  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
  RewriteRule ^ - [L]


  RewriteRule ^ /
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

【问题讨论】:

    标签: angularjs .htaccess http redirect https


    【解决方案1】:

    前 2 个重写条件将忽略现有文件和目录,但根目录(通常)始终存在。尝试删除第一个块。

    这就足够了:

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    

    要使角度路线起作用,您需要另一个像这样的块

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule ^ index.html
    

    这样所有非 SSL 流量都将被重定向。第二部分会将所有内容重写到您的角度索引文件中,现有目录和文件除外

    【讨论】:

    • 没有它们,我的路线将无法访问。我得到了 404。如果我只写 website.com 我得到了 500
    • 我无法到达我的路线。浏览主页是可以的,但如果我刷新页面或输入 www.mywebsite.com/route1 我得到 404
    • 我尝试了上面的方法并得到一个错误:ERR_TOO_MANY_REDIRECTS 有人可以验证这两者是否一起工作?
    • 我已经在我的 .htaccess 文件中使用了这两个块,但是当我通过 url 去路由时,我遇到了内部服务器错误。如果我点击应用程序中的链接,它可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 2012-11-02
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    相关资源
    最近更新 更多