在angular中如何从HTTP重定向到HTTPS



我有以下.httaccess从HTTP页面重定向到HTTPS,但它显然不像预期的那样工作:

RewriteEngine On
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} (www.)?myuniversity.ro
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html

问题是,当我输入我的实际网站,如:
http://www.myuniversity.ro,它会自动转到http://www.myuniversity.ro/home,就像它应该怎么做,但刷新后去HTTPS,有没有办法从第一次尝试进入HTTPS ?
我的意思是,直接从http://www.myuniversity.ro到https://www.myuniversity.ro/home不需要刷新?
我的路由配置:

const routes: Routes = [
{ path: '',   redirectTo: '/home', pathMatch: 'full' },
{ path: 'home', component: HomeComponent }
];

你不应该在angular中处理http到https的重定向。这会使您的服务器不安全。因为api没有使用angular,所以assets等

请检查一下这是否适用于您

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} www.domain.de [NC]
RewriteRule ^(.*)$ https://www.domain.de%{REQUEST_URI} [R=301,L]

。为什么在angular中使用重定向到home,而不使用"path"来显示home组件?想想看。我想最好是在搜索引擎中有域名,而不是这个"主页"的东西。

# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} (www.)?myuniversity.ro
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

你把这两条规则的顺序搞错了。HTTP到HTTPS的重定向没有被处理。HTTP到HTTPS的重定向应该放在第一位。目前,第一条规则阻止了当请求的URL映射到文件或目录时进行进一步处理。请求根文件(例如:http://www.myuniversity.ro)为目录。在这种情况下,.htaccess中的HTTP到HTTPS重定向甚至不被处理。

Aside:是否需要检查HTTP到HTTPS重定向中请求的主机名?您是否托管多个域名,而有些域名您不想重定向?尽管由于正则表达式不是锚定的,您可能会匹配太多。如。foomyuniversity.ro也符合你的条件。

相关内容

  • 没有找到相关文章

最新更新