除特定 URL 外,所有页面均强制使用 HTTP

除特定 URL 外,所有页面均强制使用 HTTP

我遇到一种情况,我需要强制我的网站中的每个页面重定向到 HTTP,除了两个需要强制重定向到 HTTPS 的特定 URL。

需要重定向到HTTPS页面的两个页面是:

/microsoft-moc-on-demand-video-training/moc-registration-page/

/课程/注册/

我在 .htaccess 文件中使用的代码如下所示:

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/courses/register/
RewriteCond %{REQUEST_URI} !^/microsoft-moc-on-demand-video-training/moc-registration-page/
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} off
RewriteRule ^(/courses/register/|/microsoft-moc-on-demand-video-training/moc-registration-page/)/ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

不幸的是,这似乎不起作用。整个网站确实重定向到 HTTP(因此部分代码有效),但这两个例外(应该重定向到 HTTPS)没有这样做,它们保留为 HTTP 链接。

知道我在这里做错了什么吗?

答案1

当你在 .htaccess 中使用 RewriteRule 时,它​​使用每个目录(相对)上下文,这意味着图案价值应该不是包含前斜线。您的图案末尾还包含一个额外的斜杠,这会导致问题。请尝试以下操作,以修复这两个问题:

RewriteRule ^(courses/register/|microsoft-moc-on-demand-video-training/moc-registration-page/) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

相关内容