2017-08-23 19 views
2
<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] 

    # Force SSL 
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L] 

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

    #Redirect to non www 
    RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] 
    RewriteRule ^(.*)$ https://example.com/$1 [R=301,L] 

    # 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}] 

</IfModule> 

私はLaravel 5.4を使用しています.htaccessファイルを作成してhttpをhttpsに、wwwをwww以外にリダイレクトしようとしています。上記のコードは、リダイレクトループを引き起こします。htaccessはhttpsと非wwwにリダイレクトします[Laravel 5.4]

私はここで間違っていますか?私はラグの答えでhtaccessファイルを更新

おかげ

EDIT 1

は、まだリダイレクトループになります。 Laravelに付属の書き換えルールのいくつかと矛盾しているのでしょうか?それは、このリダイレクトループエラーの原因となっている理由は、最も可能性が高い -

は、ここにあなたが.htaccessあなたが同じだけの異なる条件で、3回をリダイレクトやっているを見てみると、更新の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] 

    # Force SSL 
    RewriteCond %{HTTP_HOST} ^www\. [NC,OR] 
    RewriteCond %{HTTPS} !=on 
    RewriteRule^https://example.com%{REQUEST_URI} [R=301,L] 

    #GZIP 
    <ifModule mod_gzip.c> 
     mod_gzip_on Yes 
     mod_gzip_dechunk Yes 
     mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ 
     mod_gzip_item_include handler ^cgi-script$ 
     mod_gzip_item_include mime ^text/.* 
     mod_gzip_item_include mime ^application/x-javascript.* 
     mod_gzip_item_exclude mime ^image/.* 
     mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* 
    </ifModule> 

    # 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}] 

</IfModule> 

答えて

0

です。

であなたの# Force SSLセクション置き換えます

RewriteCond %{HTTP_HOST} ^www\. [NC,OR] 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://example.com%{REQUEST_URI} [R=301,L] 

これは単に1にあなたのルールを組み合わせて、HTTPsが上とwwwが使用されている場合ではないかどうかをチェックします。これらの条件のいずれかが満たされている場合は、URLを書き換えてHTTPsを強制し、wwwも削除します。

の前にキャッシュをクリアすることを確認してください。

+0

私はこれを動作させることはできません。 はRewriteRuleです。^(。*)$ https:// {HTTP_HOST}%{REQUEST_URI} [R = 301、L] "%"がありませんか? RewriteRule ^(。*)$ https:// {%HTTP_HOST}%{REQUEST_URI} [R = 301、L]にする必要がありますか? –

+0

自分のコードを編集しました。今すぐ働かなければならない。 @ J.Doe – Lag

+0

をテストする前にキャッシュをクリアすることを忘れないでください。htaccessの新しいバージョンで投稿を更新しました。依然としてリダイレクトループが発生します。おそらく、ラーベルが提供する書き換えのいくつかと矛盾しているのでしょうか? –

関連する問題