在除特定url以外的所有网页上强制使用HTTP

我有一种情况,我需要强制我站点中的每个页面redirect到HTTP,除了需要强制redirect到HTTPS的两个特定URL。

需要redirect到HTTPS页面的两个页面是:

/微软MOC点播video培训/ MOC-注册页/

/课程/注册/

我在我的.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] 

不幸的是,这似乎并没有工作。 整个站点都会redirect到HTTP(因此部分代码可以工作),但这两个例外(应该redirect到HTTPS)不会这样做,它们仍然是HTTP链接。

任何想法我在这里做错了吗?

在.htaccess中使用RewriteRule时,它使用每个目录(相对)上下文,这意味着该模式值不应包含前导斜杠。 你的模式还包括一个额外的尾部斜线,这将导致问题。 尝试以下,修复这两个项目:

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