2017-05-16 17 views
1

私はLaravel 5.2プロジェクトを持っています。最近私のウェブサイトにSSL証明書をインストールしたので、ブラウザにhttps://example.comと入力すると動作しますが、example.comと書くとHTTPで接続します。laravel 5.2のHTTPをhttpsにリダイレクトする

はそれを修正するには、私は私の.htaccessファイルに以下の行を追加:その後

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

を、私はexample.com入力すると、ブラウザがhttps://example.comに私をリダイレクトします。それは最高です。

問題は、URL http://example.com/download/get/book/volume2にアクセスしようとすると、HTTPSにリダイレクトされません。私はインデックスページにリダイレクトされます。 URLにのhttpsを追加するとうまくいきますが、私はHTTPからHTTPSにリダイレクトするアプリが必要です。ルートは、私は、ブラウザのタブでprivates/storageフォルダ内に持っているPDFファイルを開くこと

Route::get('download/get/book/{book}' 

:routesファイル内

ルート。

EDIT:

私の.htaccessファイル:

<IfModule mod_rewrite.c> 
<IfModule mod_negotiation.c> 
    Options -MultiViews 
</IfModule> 

RewriteEngine On 

# Redirect Trailing Slashes If Not A Folder... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

# Handle Front Controller... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 

# Handle Authorization Header 
RewriteCond %{HTTP:Authorization} . 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

# require SSL 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

+0

他の '.htaccess 'それらのサブディレクトリのいずれかのファイル? (実際のサブディレクトリですか?) – MrWhite

+0

いいえ、私は 'public_html'フォルダを持っています。ここには私の.htaccessフォルダと私のすべてのビュー、コントローラなどがある "privates"フォルダがあります。 –

+0

その場合、 '.htaccess'これらのディレクティブを追加しましたか? '.htaccess'ファイルの内容をあなたの質問に含めてください。 – MrWhite

答えて

2

あなたのHTTP、HTTPSには、重要なのは、すぐにRewriteEngineディレクティブの後、あなたの.htaccessファイルの先頭付近に行くためにニーズをリダイレクトし、 、の前にララベルフロントコントローラ。一般的なルールとして

外部リダイレクトが常に内部書き換え前に行く必要があります。

フロントコントローラは、(最終的のrouteingを処理する)すべての要求(というか、物理ファイルまたはディレクトリにマップしていない要求)をキャッチしindex.phpにこれらを書き換えます。問題は、HTTPからHTTPSへのリダイレクトが後で行われ、今書き換えられたURLをindex.phpへの外部リダイレクトに変換することです。

同様に、# Handle Authorization Headerブロックもフロントコントローラー(理想的には)の前に移動する必要があります。 (.htaccessファイルのループ状態のため、ディレクトリごとに.htaccessファイルで動作しますが、これらのディレクティブをサーバ設定に移動すると失敗します)

+0

あなたのアスワーに感謝します。私はあなたが言った変更を加えましたが、それはまだ動作しません。 –

+0

テストする前にブラウザのキャッシュをクリアしてください。以前の(間違った)301はブラウザによってキャッシュされています。 (この理由から、キャッシュを避けるために302を使ってテストすることが望ましいことがよくあります。) – MrWhite

+1

それは動作します!!!!ありがとうございました!!! –

関連する問題