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