【问题标题】:How to force https with .htaccess on pages with certain URL string如何在具有特定 URL 字符串的页面上使用 .htaccess 强制 https
【发布时间】:2016-03-15 02:38:29
【问题描述】:

我已经查看了许多与该主题相关的帖子,但我没有按预期工作,所以...这是我的问题:

我的网站中有几个采用这种模式的页面:

http://example.com/newsletter/[variable_substring]

我需要强制所有包含“/newsletter/”作为 url 一部分的 url 使用“https://”协议而不是“ http://"(当然,如果它们是通过 http:// 访问的)。

我需要在 .htaccess 中执行此操作。有人知道我要输入什么吗?

问候,

【问题讨论】:

  • 请注意,我认为我的网站是通过德国的代理服务器通过 Internet 发布的。另请注意,当我打印 PHP 的 $_SERVER['HTTPS'] 时,我总是得到 'http'。听起来无论我做什么我都会得到'http'。

标签: .htaccess https http-redirect


【解决方案1】:

试试下面的代码

RewriteEngine on
#if the https is off
RewriteCond %{HTTPS} ^off$
#and the request is /newsletter/...
RewriteCond %{REQUEST_URI} ^/newsletter/
#then redirect it to https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [NC,L,R]

【讨论】:

  • 嗨@Starkeen,请阅读我之前的评论。您的代码似乎有效,但我的浏览器中有一个重定向循环。由于我无法确定代理是在“http”还是“https”中浏览。我对吗?那么,如果属实,我能做些什么来解决我的问题?
  • 我贴的代码没有问题。当 url 指向自身时会发生重定向循环错误我不认为我的代码正在这样做。可能是您的其他规则与此冲突。
  • 我也这么认为。我的 htaccess 是来自 Drupal 7 安装的“标准”.htaccess 文件。我没有对它进行任何修改,但是这个。我仍然猜测它与服务器配置有关,不是吗?
【解决方案2】:

尝试将其添加到 .htaccess

RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^(.*)$ RewriteRule ^/newsletter/(.*)$ https://%1/newsletter/$1 [R=301,QSA,L]

同样在 httpd.conf 中为这个目录添加AllowOverride All

【讨论】:

  • 我用你的代码试过了,它没有做任何事情。 url 不会更改为 https 协议。另请注意,我无权访问 httpd.conf 文件。它由第三方团队管理。
  • 可能是重写引擎被禁用了?添加到 .htaccess RewriteEngine On RewriteRule ^/newsletter/$ /newsletter1/ [R=301,QSA,L]。如果浏览器将从http://domain/newsletter/ 重定向到http://domain/newsletter1/,则启用重写引擎。
  • .htaccess 应该放在根目录下,而不是放在 newsletter 目录下
  • $_SERVER['HTTPS'] 对于 http 和 https 请求是 'http'?
  • 我已经在我的 htaccess 中看到了一个“RewriteEngine On”语句。所以我在下面添加了你的其余代码。但是,没有执行到“/newsletter1/”的重定向。我得到了完全相同的网址。而且,作为对您问题的回答,我做了<?php print $_SERVER['HTTPS']; ?>,但没有打印任何内容。这有什么问题?
猜你喜欢
  • 1970-01-01
  • 2011-09-07
  • 2013-01-22
  • 1970-01-01
  • 2014-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
相关资源
最近更新 更多