.htaccess 强制HTTP用于除特定URL之外的所有页面

.htaccess 强制HTTP用于除特定URL之外的所有页面,.htaccess,mod-rewrite,https,.htaccess,Mod Rewrite,Https,我有一种情况,我需要强制我的站点中的每个页面重定向到HTTP,除了两个需要强制重定向到HTTPS的特定URL 需要重定向到HTTPS页面的两个页面是: /microsoft moc点播视频培训/moc注册页面/ /课程/注册/ 我在.htaccess文件中使用的代码如下所示: RewriteCond %{HTTPS} on RewriteCond %{REQUEST_URI} !^/courses/register/ RewriteCond %{REQUEST_URI} !^/microsoft

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

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

/microsoft moc点播视频培训/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]
不幸的是,这似乎不起作用。整个站点确实重定向到HTTP(因此部分代码是有效的),但是这两个异常(应该重定向到HTTPS)没有做到这一点,它们作为HTTP链接保留


知道我做错了什么吗?

问题是对于
重写规则
,请求的路径中没有初始的
/
。因此,您试图匹配不存在的内容

在第一个捕获组中,每个选项的末尾都有一个额外的
/
,当与最终的
/
组合时,需要一个路径,例如
/courses/register/

以下代码应适合您的需要:

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]

问题是,对于
重写规则
,请求的路径中没有初始的
/
。因此,您试图匹配不存在的内容

在第一个捕获组中,每个选项的末尾都有一个额外的
/
,当与最终的
/
组合时,需要一个路径,例如
/courses/register/

以下代码应适合您的需要:

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]

只是一个相关的问题:为什么不将所有内容重定向到https?如果你操纵个人数据或信用卡信息,我强烈建议你在整个网站上使用https以避免错误…只是一个相关的问题:为什么不将所有内容重定向到https?如果你操纵个人数据或信用卡信息,我强烈建议你在整个网站上使用https以避免错误。。。