0

以下是 .htaccess 的一部分:

 <IfModule mod_rewrite.c>
    RewriteCond %{HTTPS} =on    
    #RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R,L]
    RewriteEngine on
    #RewriteBase /~example/    
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
  </IfModule>

当我删除 RewriteBase 之前的评论时,我可以通过 webhost 提供的共享 SSL 访问我的网站: https://secure.myhost/~example/. 但是,当我尝试通过非安全方式访问它时,它会导致服务器错误http://example.com

我的问题是:有没有办法让 .htaccess 有条件地考虑基于 HTTPS 或 HTTP 的 RewriteBase ?

4

1 回答 1

0

你的重写规则需要一些重构我的东西。用这个替换你的代码:

Options +FollowSymLinks -MultiViews

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /~example/

    RewriteCond %{HTTPS} on    
    RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

    RewriteRule (?!webroot/)^(.*)$ webroot/$1 [L,NC]
</IfModule>
于 2013-08-25T10:49:59.297 回答