代码之家  ›  专栏  ›  技术社区  ›  Stephen Adelakun

.HTACCESS TLS/SSL自动重定向中断正常MVC路由

  •  2
  • Stephen Adelakun  · 技术社区  · 9 年前

    我刚从comodo购买了tls证书。在此之前,我的.htaccess文件运行良好。我以前在.htaccess文件中有这些规则:

    Options -MultiViews
    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
    

    但我想要一个从http到https的自动重定向;因为我自己做不到,所以我的托管公司帮我在上面添加了以下内容:

    RewriteEngine On 
    RewriteCond %{SERVER_PORT} 80 
    RewriteRule ^(.*)$ https://www.my-site.com/$1 [R,L]
    

    他们还这样评论了我自己的第一行: #Options -MultiViews 现在的问题是,正常的页面路由在https地址上不再有效。看起来像这样的东西 http://www.my-site.com/somepage 现在看起来像 https://www.my-site.com/index.php?url=somepage 。如果不是从引导页面开始的某些设置没有通过引导页面,我就不会担心。

    我想要两全其美,https重定向和我漂亮的url。有什么帮助吗?

    1 回复  |  直到 9 年前
        1
  •  1
  •   anubhava    9 年前

    保持 http->https 顶部的重定向规则:

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

    确保在清除浏览器缓存后对其进行测试。