【问题标题】:.htaccess force SSL with subfolder rewrite rule.htaccess 使用子文件夹重写规则强制 SSL
【发布时间】:2016-04-23 17:36:53
【问题描述】:

我的服务器上的 /app/ 文件夹中有一个应用程序,我在根 URL http://myapp.com 上显示该应用程序,并使用以下 .htaccess 规则:

RewriteEngine On
RewriteRule ^$ /app/ [L]
RewriteCond %{DOCUMENT_ROOT}/app/%{REQUEST_URI} -f
RewriteRule ^(.*)$ /app/$1 [L]

我想要做的也是强制 SSL 为此设置始终使用 https://myapp.com

我尝试了一堆不同的规则,但似乎没有任何东西可以强制 SSL 并且还保持 /app/ 子文件夹显示在根目录。

【问题讨论】:

    标签: apache .htaccess mod-rewrite ssl


    【解决方案1】:

    您可以使用以下内容:

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
    RewriteRule ^$ /app/ [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule ^(.*)$ /app/$1 [L]
    

    【讨论】:

    • 使用这个我在 Chrome 中得到一个错误:ERR_TOO_MANY_REDIRECTS
    • @Ian 我已经更新了重写条件,现在试试吧
    • 不幸的是,它仍然显示太多重定向错误:/这可能是我原来的规则不理想。真的我只是希望它强制 SSL 和非 www,在根目录显示 app 文件夹,并重写 /app/ 中的 css/js 文件 url,使它们看起来在根目录中。
    • @Ian 因为浏览器的缓存,清除浏览器缓存或使用不同的网络浏览器
    • 我尝试过隐身、Safari、Firefox - 都有太多的重定向。感谢您到目前为止的帮助!
    【解决方案2】:

    原来我的主人有他们自己独特的方式来做到这一点。我必须执行以下操作才能使其正常工作:

    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
    RewriteRule ^ https://%2%{REQUEST_URI} [R=301,L]
    RewriteRule ^$ /app/ [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule ^(.*)$ /app/$1 [L]
    

    现在唯一的问题是我似乎可以强制 www 重定向到非 www。

    【讨论】:

      猜你喜欢
      • 2012-11-22
      • 1970-01-01
      • 2012-08-20
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      相关资源
      最近更新 更多