您是否为端口443 设置了单独的VirtualHost?
如果是,请尝试从ssl.conf / VirtualHost 指令中的VirtualHost 指令中删除__default__,该指令由ssl 设置。
应该是这样的:
<VirtualHost _default_:443>
首先,我建议您将其添加到您的VirtualHost。记录活动或mod_rewrite。这将有助于调试和更高的RewriteLogLevel 更好地进行调试。
RewriteEngine On
RewriteLog "/path/to/your/rewrite.log"
RewriteLogLevel 3
来自RewriteLogLevel Docs:
要禁用重写操作的日志记录,只需将 Level 设置为 0。这将禁用所有重写操作日志。
使用较高的 Level 值会显着降低 Apache 服务器的速度!使用级别大于 2 的重写日志文件仅用于调试!
试试这个解决你的问题:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/?axis2/(?:.*)$ [NC]
RewriteRule ^(.*)(/?axis2/)(.*)$ https://$1$2$3 [L,R=301]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI}%{QUERY_STRING} [L,QSA,R=301]
如果%{REQUEST_URI} 不是以/axis2 或axis2/ 或/axis2/ 或axis2 开头和结尾,它会将您的URI 重定向到https 并停止任何进一步的规则重写。
否则,只有这个会执行:
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI}%{QUERY_STRING} [L,R=301]
R=301 表示永久重定向。如果只指定了 R,则会进行临时重定向,即 302。