0

我有一个 Slim 4 应用程序,我正在尝试设置一个将非 https 重定向到 https 的中间件。所以如果我输入

this_website.com

在浏览器中,这会自动重定向到 https://this_website.com

我有一个使用 Slim 3 构建的早期网站,我可以使用以下内容:

final class FullHttpsMiddleware {

    public function __invoke($request, $handler) {

        $response = $handler->handle($request);

        if($request->getUri()->getScheme() !== 'https' ){

            if($request->getUri()->getPath() != '/') {
                $response = $response->withStatus(302)->withHeader('Location', 'https://' . $request->getUri()->getHost() . $request->getUri()->getBasePath() . '/' . $request->getUri()->getPath() );
            } else {
                $response = $response->withStatus(302)->withHeader('Location', 'https://' . $request->getUri()->getHost() . $request->getUri()->getBasePath() );
            }
        }

        return $response;
    }
}

问题是$request->getUri()->getBasePath()Slim 4 中不存在该代码。如何更改此代码以在 Slim 4 上工作?

4

1 回答 1

-1

我写了一篇关于这个主题的博文:Slim 4 - HTTPS Middleware

您还可以使用.htaccess文件将 http 流量重定向到 https。

如果您的 .htaccess 中有现有代码,请添加以下内容:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
于 2022-01-25T08:12:14.720 回答