使用 laravel 重定向 https
Redirect https with laravel
我建立了一个网站,我想将 http(本地)重定向到 https(在线使用)。我尝试使用中间件,使用 AppServiceProvider
、.htacess
、RouteServiceProvider
但它没有用。
1、当我使用中间件时
class HttpsProtocol
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if (!app()->environment('local')) {
// for Proxies
Request::setTrustedProxies([$request->getClientIp()],
Request::HEADER_X_FORWARDED_ALL);
if (!$request->isSecure()) {
return redirect()->secure($request->path(), 301);
}
}
return $next($request);
}
}
2、当我使用.htances
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
3,当我使用 AppServiceProvider
public function boot()
{
if (!app()->environment('local')) {
$this->app['request']->server->set('HTTPS', true);
URL::forceScheme('https');
}
//
}
什么时候使用get方法
https://i.stack.imgur.com/XXiRG.png
https://i.stack.imgur.com/4tZz0.png
它创建了另一个 https link 并且可以 运行。
但是当我使用 check slug automatic
https://i.stack.imgur.com/Kv8rh.png
当我使用 Post 方法时
https://i.stack.imgur.com/9vKOD.png
https://i.stack.imgur.com/rAoMD.png
它没有进入 https,
请帮我 !
(对不起,因为我的英语)
只需打开 AppServiceProvider 并添加
\URL::forceScheme('https');
在启动函数中。就这些了。
public function boot()
{
\URL::forceScheme('https');
}
我建立了一个网站,我想将 http(本地)重定向到 https(在线使用)。我尝试使用中间件,使用 AppServiceProvider
、.htacess
、RouteServiceProvider
但它没有用。
1、当我使用中间件时
class HttpsProtocol
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if (!app()->environment('local')) {
// for Proxies
Request::setTrustedProxies([$request->getClientIp()],
Request::HEADER_X_FORWARDED_ALL);
if (!$request->isSecure()) {
return redirect()->secure($request->path(), 301);
}
}
return $next($request);
}
}
2、当我使用.htances
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
public function boot()
{
if (!app()->environment('local')) {
$this->app['request']->server->set('HTTPS', true);
URL::forceScheme('https');
}
//
}
https://i.stack.imgur.com/4tZz0.png
它创建了另一个 https link 并且可以 运行。 但是当我使用 check slug automatic
https://i.stack.imgur.com/Kv8rh.png
当我使用 Post 方法时
https://i.stack.imgur.com/9vKOD.png
https://i.stack.imgur.com/rAoMD.png 它没有进入 https, 请帮我 ! (对不起,因为我的英语)
只需打开 AppServiceProvider 并添加
\URL::forceScheme('https');
在启动函数中。就这些了。
public function boot()
{
\URL::forceScheme('https');
}