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

最佳答案

您的重写规则需要一些重构。用以下代码替换您的代码:

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>

关于apache - .htaccess有条件的RewriteBase,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18424113/

10-13 00:27