【问题标题】:301 redirect HTTPS to HTTP for a single page301 将 HTTPS 重定向到单个页面的 HTTP
【发布时间】:2023-03-03 14:40:01
【问题描述】:

我目前已将 SSL 证书应用于我的网站,并且所有 URL 都正确重定向到 https。我需要其中一个 URL 为 HTTP。我的 .htaccess 中有以下代码,可将所有页面重定向到 HTTPS。

我希望下面的 URL 是 HTTP 而不是 HTTPS。

http://www.example.com/blog_rss.php

RewriteEngine on
RewriteBase /
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

提前感谢您的帮助!

【问题讨论】:

  • RewriteRule ^blog_rss.php etc...?
  • 你能澄清一下吗?
  • 您的规则匹配所有内容。我的只有在请求的 url 是 blog_rss.php 时才匹配。而对于这样一个简单的重定向,您不需要使用 mod_rewrite。一个简单的Redirect Permanent /blog_rss.php http://etc... 也可以。
  • 如果我只对特定页面使用简单的重定向。示例:重定向 301 /blog_rss.php http://www.example.com/blog_rss.php 它会导致重定向循环,因为我有一个全局重定向到 https。

标签: apache .htaccess redirect ssl https


【解决方案1】:

你可以在你的 htaccess 中用这个替换你当前的代码

RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/blog_rss\.php$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L,QSA]

RewriteCond %{HTTPS} on
RewriteRule ^(blog_rss\.php)$ http://%{HTTP_HOST}/$1 [R=301,L,QSA]

编辑:看起来%{HTTPS} 在某些服务器上无法识别,这会导致无限循环。

试试%{SERVER_PORT}(如果默认http端口还是80,ssl端口是443)

RewriteEngine On
RewriteBase /

RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/blog_rss\.php$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L,QSA]

RewriteCond %{SERVER_PORT} 443
RewriteRule ^(blog_rss\.php)$ http://%{HTTP_HOST}/$1 [R=301,L,QSA]

您也可以尝试使用初始语法

RewriteEngine On
RewriteBase /

RewriteCond %{ENV:HTTPS} !on [NC]
RewriteCond %{REQUEST_URI} !^/blog_rss\.php$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L,QSA]

RewriteCond %{ENV:HTTPS} on [NC]
RewriteRule ^(blog_rss\.php)$ http://%{HTTP_HOST}/$1 [R=301,L,QSA]

【讨论】:

  • 嗨,贾斯汀,感谢您的回复,但是当我用您的代码替换我当前的代码时,我收到一个错误。 “页面重定向不正确。Firefox 检测到服务器正在以永远不会完成的方式重定向对该地址的请求。”是否将 {HTTP_HOST} 替换为我的域名?
  • 不,您不必替换它,此代码应与复制/粘贴一起使用。您似乎有其他规则试图重定向,或者可能是缓存问题(尝试使用新浏览器或清除浏览器缓存)
  • 感谢您的帮助。我删除了除您之外的所有其他重定向,并使用新的浏览器/清除缓存进行了尝试,但结果仍然相同。我的目标是为除 blog_rss.php 之外的所有页面设置一个全局重定向为 HTTPS。我希望这在我原来的帖子中很清楚。
  • 这就是我的代码所做的(经过测试和工作),您的原始帖子很清楚。您的 htaccess 在根级别吗?你必须只用我的代码试试(至少现在)
  • 我使用了包含初始语法的第二个代码,它成功了!你的生活更安全!非常感谢贾斯汀!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
相关资源
最近更新 更多