web-dev-qa-db-ja.com

強制Laravel HTTPSバージョンを使用する

laravelサイトがあり、すべてをSSLで機能させるように努めています。Laravelは代わりにhttpを使用したいと考えています。たとえば、私はform要素を使用しており、メソッドは自動的にhttpに送信していました。組み込みのstylescriptリンクを使用して同じことをすべて静的に動作するように変更しました(通常ol 'HTML)私が理解できなかった最後のことは、ページ付け(jscrollを使用)です。この行があります。

{!! $plugins->appends(['tag' => $param2, 'search' => $param1 ])->render() !!}

これを印刷するもの:

    <ul class="pager">
<li class="disabled"><span>«</span></li> 
<li class="jscroll-next-parent" style="display: none;"><a href="http://siteurl.net/pagename/page/?tag=XXX&amp;search=&amp;page=2" rel="next">»</a>
</li>
</ul>

これをhttpsに変更する方法はありますか?ありがとう!

5
Avi

これを試して、AppServiceProviderに移動し、このコードをbootメソッドに配置します。

\URL::forceScheme('https');

クラス:

namespace App\Providers;

use Illuminate\Support\Facades\URL;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        URL::forceScheme('https');
    }
}

他の方法は.htaccessによって強制されます:

RewriteEngine On

RewriteCond %{HTTPS} !on
RewriteRule ^.*$ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

ブラウザーのキャッシュをクリアすることを忘れないでください(その後、htaccessは正しく機能します)。

幸運を!

12
Adam Kozlowski

Httpsルートのみを生成する場合(ただし、プレーンなhttpリクエストは許可されます)、AppServiceProviderを変更します。

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        URL::forceScheme('https');
    }
}

httpリクエストをhttpsにリダイレクトする場合は、グローバルミドルウェアを追加します。

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

        if (!$request->secure() && App::environment() === 'production') {//optionally disable for localhost development
            return redirect()->secure($request->getRequestUri());
        }

        return $next($request);
    }
}
1
Luca C.

CloudflareにSSLを適用することで、すべてを機能させることができました。コードにはありませんが、機能します。

0
Avi

forceSchemeが間違っています。forceSchemaである必要があります。AppServiceProviderを見つけて、ブート関数の下に追加します。

\URL::forceScheme('https');

ということです

public function boot()
{
    \URL::forceSchema('https');
}
0