.htaccess 重定向到https页面,但不针对Java用户代理

.htaccess 重定向到https页面,但不针对Java用户代理,.htaccess,mod-rewrite,https,.htaccess,Mod Rewrite,Https,我想将所有用户重定向到我网站的https版本,但不是那些使用Java作为用户代理的用户,因为我有一个尚不支持SSL的应用程序。我已经尝试过这个代码,但没有成功 RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_USER_AGENT} !Java.* RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 我希望在用户不使用https并且用户代理不是Java的情

我想将所有用户重定向到我网站的https版本,但不是那些使用Java作为用户代理的用户,因为我有一个尚不支持SSL的应用程序。我已经尝试过这个代码,但没有成功

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_USER_AGENT} !Java.*
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
我希望在用户不使用https并且用户代理不是Java的情况下重写规则。我不是htaccess文件的最佳用户,我正在请求有关用户代理的帮助。Java用户代理具有以下格式:

Java/1.7.0_60


Java版本在斜杠后面,因此我想检测用户代理是否以Java开头。

很抱歉,这可能没有帮助,但我不会为Java代理构建特殊的行为。由于客户端代码可以操作用户可以使用的客户端头。排除Java有什么好的理由吗?我的应用程序通过http请求一些页面,因此它被重定向到https,所以我得到的是永久移动的301消息,而不是实际的内容。如果Java用户代理不会被重定向到https,它将获得实际的内容。第二种选择是更新应用程序以使用SSL,但这会导致用户更新应用程序的成本,我希望避免这种情况。java应用程序是否有某种缓存?由于您使用301重定向,它可能使用了旧的、错误的重定向尝试,并完全绕过了服务器。什么不起作用?您是否检查了web服务器上的用户代理字符串?我已使用netcat检查了用户代理,它看起来与我在问题中所写的一样。而且它不使用任何缓存,因为如果我删除重定向,那么在下一次启动应用程序时,一切都会正常工作。