【问题标题】:Use .htaccess to force HTTPS only on 1 page & 1 directory?使用 .htaccess 仅在 1 个页面和 1 个目录上强制使用 HTTPS?
【发布时间】:2017-08-13 05:45:29
【问题描述】:

我们只需要对一个特定页面和一个目录强制使用 HTTPS,即 /login.php 和 /forum 目录中的任何内容。网站上的所有其他页面都应强制使用 HTTP(即使手动请求为 HTTPS)。

我在通过 .htaccess 使其工作时遇到了障碍...有人可以帮忙吗?非常感谢!

【问题讨论】:

  • 您知道这样做不安全吗?如果你只在几个页面上使用https,那么你很容易受到中间人的攻击,并且你不能使用HSTS(这是对sslstrip攻击的唯一保护)

标签: .htaccess ssl https


【解决方案1】:

您可以使用以下 rewriteRules :

RewriteEngine on


#force https for /login.php and /forum
RewriteCond %{HTTPS} off
RewriteRule ^(login\.php|forum/.*)$ https://%{HTTP_HOST}/$1 [NE,L,R]
#redirect everything else to http if requested as https
RewriteCond %{HTTPS} on
RewriteRule ^((?!login\.php|forum/.*).*)$ http://%{HTTP_HOST}/$1 [NE,L,R]

【讨论】:

  • 谢谢!看起来我还需要让最终的 RewriteRule 忽略所有 .js、.css、.jpg、.gif 和 .png 文件,否则我的网站设计会中断。但是当我修改你的最后一行时,这似乎不起作用: RewriteRule ^((?!login\.php|\.css|\.jpg|\.gif|\.png|\.js|forum/.* ).*)$ http://%{HTTP_HOST}/$1 [NE,L,R]
  • 您修改后的代码不匹配 file.css 它只是匹配 .css 。去掉克拉^来解决这个问题。
  • 当我移除克拉时,它会破坏 login.php 页面(它重定向到 ogin.php)
  • 或试试这个模式 ^((?!login\.php|forum/.*|.*\.css|.*\.js).*)$
猜你喜欢
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 2017-06-15
  • 2012-05-29
  • 2013-01-22
  • 2013-05-31
  • 2022-01-07
  • 1970-01-01
相关资源
最近更新 更多