.htaccess - 尝试强制 https 时“重定向过多”

2024-01-16

我试图强制根域的子文件夹 (/bbb/) 始终显示为 https。还有我的.htaccess文件负责页面的扩展名。

我已经把.htaccess文件在我的里面/bbb/文件夹,但当我尝试强制连接到 https 时,我得到“太多重定向”,没有它一切工作正常。

我的代码有什么问题吗?

Options +FollowSymLinks -MultiViews
Options +Indexes
AcceptPathInfo Off
RewriteEngine on
RewriteBase   /

ErrorDocument 404 https://example.co.uk/404page/404.html

#Force from http to https
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTP_HOST} !^bbb.example.co.uk/$
RewriteRule ^(.*)$ https://bbb.example.co.uk/$1 [R=301]

#take off index.html
 RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.html$ [NC]
RewriteRule . http://www.%{HTTP_HOST}%1 [R=301,NE,L]

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]    

## hide .html extension
# To externally redirect /dir/foo.html to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.html
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [L]

问题出在这条规则上:

#Force from http to https
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTP_HOST} !^bbb.example.co.uk/$
RewriteRule ^(.*)$ https://bbb.example.co.uk/$1 [R=301]

将此规则更改为:

#Force from http to https
RewriteCond %{HTTPS} !on 
RewriteCond %{HTTP_HOST} =bbb.example.co.uk
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L,NE]

您的病情因使用而逆转!在开始处并在结尾处有一个额外的斜杠,它永远不会匹配,因此使您的条件始终返回 true。

在测试之前请确保清除浏览器缓存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.htaccess - 尝试强制 https 时“重定向过多” 的相关文章

  • Symfony 2:如果用户具有特定角色,则将用户重定向到页面

    我有一个小问题 我希望无论用户在我的网站上哪里 如果他具有 ROLE DEGRADE 角色 他就会被重定向到特定页面 我该怎么做 我必须使用防火墙 我不想将用户重定向到表单登录 而只是重定向到一个简单的页面 我希望在我的网站上随处可见 而不
  • 客户端浏览器关闭时服务器端 Perl CGI 脚本中断

    我已经尝试解决一个小问题很长一段时间了 但似乎我无法解决 我编写了一个 HTML 页面 它在提交表单时调用 perl CGI 脚本 该 CGI 在服务器端执行一定数量的任务 我让脚本将这些任务的步骤打印到 HTML 页面上的 iframe
  • 为什么我的 Apache2::Log 输出用 \n 替换换行符?

    我在 apache2 mod perl 下设置了多个虚拟主机 我用的是ErrorLog指令为每个虚拟主机获取单独的错误日志 仅当我使用 Apache2 Log 时 这才按预期工作 警告 只会记录到常规错误日志中 这样就可以了 最后 但还存在
  • Node js 使用中间件重定向进行过多重定向

    在我的 Node js 应用程序 我使用的是express 4 x 中 我想检查用户是否已登录 如果用户未登录 我想重定向到我的登录页面 然后我在中间件中这样做 服务器 js app use function req res next if
  • XHR 不起作用,因为“Access-Control-Allow-Origin 不允许来源”

    我正在使用 Rails 3 开发一个 API 服务器 到目前为止 它非常方便 但我一直遇到错误 我不确定这是因为我的 Apache 设置还是 Rails 应用程序 当我尝试执行 HTTP DELETE 或 PUT 请求时http sampl
  • 无法对 Elastic Beanstalk AWS 上运行 ASP.NET 的网站强制使用 HTTPS(使用经典负载均衡器)

    这样我终于能够成功创建一个https网站了 它只是运行模板 ASP NET Web 项目 我有一个证书 并且该证书已添加到 AWS 中的 ELB 弹性负载均衡器 经典 中 我的环境可以浏览到https www mvc cloudy skie
  • 将 stdout 和 stderr 重定向到带有前缀的单个文件

    我正在编写一个 bash 脚本 需要重定向stdout and stderr我运行到单个文件的命令的输出 在每行前面加上前缀stderr or stdout 因此 有没有一个简单的方法可以做到这一点 from Debian http www
  • Django 基于类的视图上的 success_url 的反向抱怨循环导入

    当使用基于方法的视图时 重定向为reverse没有抱怨这一点 并且仍然可以找到 root url conf 但是 在基于阶级的观点中 它抱怨 ImproperlyConfigured at blog new post The include
  • PHP:让用户仅下载购买的文件

    我预见到允许客户通过 PayPal 向我购买某些内容会出现问题 我将提供多种无形商品 当有人完成对其中一种商品的购买时 他们将被重定向到一个登陆页面 让我们称之为 thank you php 该页面将自动排队下载 并允许链接排队下载 以防万
  • CodeIgniter 项目给出 303/压缩错误

    尝试设置一个基于 CodeIgniter 的项目进行本地开发 LAMP 堆栈 并且一旦更新了所有配置文件 这意味着我成功地为 CodeIgniter 生成了有意义的引导错误 我在浏览器中收到此错误 Chrome Error 330 net
  • 如果django项目位于子文件夹和子域中,如何编写.htaccess?

    我的 django 站点的路径是 staging ninjawebsite com clients project 我希望将其视为基本网址 django 项目位于public html clients project子文件夹 一切似乎都工作
  • HTTPURLConnection 不遵循从 HTTP 到 HTTPS 的重定向

    我不明白为什么JavaHttpURLConnection不遵循从 HTTP 到 HTTPS URL 的 HTTP 重定向 我使用以下代码来获取页面https httpstat us https httpstat us import java
  • 这个重写规则是什么意思?

    我正在安装 phpancake 有一个像这样的文件夹 application install library public sql schema install html install php 这条规则意味着什么 RewriteEngin
  • 从 SSLv3 迁移到 TLSv1

    对于 POODLE SSLv3 现已在服务器上禁用 客户端软件是在 NET 2 0 中开发的 并提供 TLSv1 作为唯一的替代方案 我有权并有能力更改客户端应用程序和服务器配置 ServicePointManager SecurityPr
  • 如何进行有条件的 .htaccess 密码保护

    我正在尝试使用 htaccess 对特定网址进行密码保护 不同的 url 指向相同的文件 但工作方式不同 我现在只需要用密码保护一个网址 我正在尝试使用 setenvif 来执行此操作 但它似乎不起作用 我可能不完全理解 apache se
  • 如何在 htaccess 中创建永久链接

    我想将链接重定向到 Linux 主机中具有 htaccess 文件的另一个链接 你能帮助我吗 from http example com examp to http example com examp php 还有我的另一个网站的另一个 f
  • PHP Github Pull 脚本错误“权限被拒绝(公钥)”

    我已经设置了一个 PHP 脚本来执行 GitHub 拉取 这包含在我的 Github 文件夹中 home mysite public html github github pull php 我的服务器已经有 SSH 公钥 就像我执行git
  • 将 stdin/stdout 从执行进程重定向到 Perl 中的管道

    我试图让执行子进程中的 STDOUT STDERR 通过 Perl 中的管道返回到父进程 我见过的最接近我想做的事情是 http forums devshed com perl programming 6 exec and redirect
  • php隐藏所有错误[重复]

    这个问题在这里已经有答案了 隐藏的最佳做法是什么allPHP 错误 因为我不想向用户显示错误 我尝试过使用 htacess通过输入代码php flag display errors off在那里 但它返回给我一个500 error 还有其他
  • 从子域中的 ../ 路径

    假设我创建了一个子域 http subdomain mydomain com http subdomain mydomain com 最初是在这个网址 http mydomain com subfolder folder http mydo

随机推荐