AngularJS SSL.htaccess的困境

AngularJS SSL.htaccess的困境,angularjs,apache,.htaccess,mod-rewrite,ssl,Angularjs,Apache,.htaccess,Mod Rewrite,Ssl,我试图在我的.htaccess文件上启用SSL,该文件已经设置为HTML5模式直接链接,但它总是导致重定向循环。我在stackoverflow上发现的最接近的问题是,即使在这里,我也无法解决它(我是htaccess文件的新手) AngularJS HTML5模式直接链接htaccess文件 RewriteEngine on RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule

我试图在我的.htaccess文件上启用SSL,该文件已经设置为HTML5模式直接链接,但它总是导致重定向循环。我在stackoverflow上发现的最接近的问题是,即使在这里,我也无法解决它(我是htaccess文件的新手)

AngularJS HTML5模式直接链接htaccess文件

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^ index.html [L]
这是完美的。解释

强制SSL访问是不正确的

RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
这本身也可以工作,但当尝试将它们组合在一起时(在通过index.html路由之前强制SSL),会导致重定向循环。如果我不得不猜测的话,那是因为它首先使用https重定向,然后第二次重定向再次使用http通过index.html路由。然而,我不知道如何测试或修复它

任何帮助都将不胜感激

编辑:正如我指出的,我应该把我尝试过的结果包含在一个循环中

RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^ index.html [L]

我不是生成htaccess文件的专家,但我找到了一个解决方案,它正在我的服务器上工作

试试这个:

RewriteEngine on

RewriteBase /

RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://%{SERVER_NAME}/index.html [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ https://%{SERVER_NAME}/index.html [L]
它强制使用https,Angular的HTML5模式也运行良好。不要忘记在web服务器配置文件中设置http(端口80)和https(端口443)URL。当然,这段代码片段仍然非常重要:

$locationProvider.html5Mode(true);

祝你好运,我希望我帮助了你

删除第二个
RewriteEngine
指令,并将HTTPS重定向放在第一位。为清楚起见,您能否显示不起作用的完整
.htaccess
文件?显示两个单独的部分是毫无意义的,你们说这两个部分放在一起不起作用。对不起,这篇文章已经编辑过了。它只是一个附加到另一个,删除了第二个重写引擎。为您的HTTP重写尝试此方法~@Phil,一直在尝试它,并在RewriteCond%{HTTPS}上使用
RewriteEngine=在RewriteRule^/?(*)https://%{SERVER_NAME}/$1[R,L]RewriteCond%{REQUEST_FILENAME}-f[OR]RewriteCond%{REQUEST_FILENAME}-d RewriteRule^-[L]RewriteRule^index.html[L]
不起作用,仍然是一个重定向循环。我想它的功能和我原来的一样。我试过了,但没有成功。这是我的.htaccess,没有强制的https重定向:
code
RewriteEngine,选项如下ymlinks RewriteBase/RewriteCond%{REQUEST_FILENAME}-f RewriteCond%{REQUEST_FILENAME}-重写规则^(.*)$/#/$1[L]