.htaccess条件RewriteBase

时间:2013-08-24 23:17:51

标签: apache .htaccess cakephp mod-rewrite ssl

以下是.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?

1 个答案:

答案 0 :(得分: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>