我正在尝试在已经为html5Mode直接链接设置的.htaccess文件中启用SSL,但它总是会导致重定向循环。我在stackoverflow上找到的最接近的问题是this,但即使从这里我也无法弄清楚(我是htaccess文件的新手)。
AngularJS html5Mode直接链接htaccess文件是
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^ index.html [L]
这完美无缺。解释here。
强制SSL htaccess是
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
并且这也可以单独使用但是当尝试组合它们(在通过index.html路由之前强制SSL)时会导致重定向循环。如果我不得不猜测这是因为它首先重定向到使用https,然后第二次重定向通过index.html再次使用http。但是,我不知道如何测试或修复它。
非常感谢任何帮助。
编辑:正如我所指出的,我应该包括我尝试过的循环。
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]
答案 0 :(得分:1)
我不是生成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);
祝你好运,我希望我能帮到你!