将所有网址重定向到 HTTPS,但以“/api”开头的网址除外

Redirect all urls to HTTPS except one which starts with "/api"

如何将所有请求从 http 重定向到 https,但 api 的请求除外? Url for api 以 /api 开头。 我使用了这个配置,但似乎不起作用。

RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !^api/
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

你能告诉我哪里做错了吗?项目写在Laravel.

提前致谢

如果你需要这个,你可以创建一个名为 checkHttps 的中间件并粘贴以下代码

<?php

namespace App\Http\Middleware;

use Closure;

class checkHttps {

    public function handle($request, Closure $next) {

        if(!request()->is('api/*')) {
            if (!$request->secure()) {
                return redirect()->secure($request->getRequestUri());
            }
        }

        return $next($request);
    }

}

然后将你的中间件添加到内核

 protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\checkHttps::class,
    ],
];

希望这能解决您的问题。