我遇到一种情况,我需要强制我的网站中的每个页面重定向到 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]