Laravel перенаправляет все http на https

У меня есть веб-сайт в Laravel, который я недавно перешел на https. Мне удалось перенаправить все безопасные URL-адреса без www (https://) на варианты с www (https://www.) с помощью других сообщений, но я застрял на получении как небезопасных вариантов (http://), так и (http://www.) перенаправлены на безопасные варианты www (https://www.)

При вызове незащищенной версии с www: http://www.apk-vervaldatum.nl,

Он перенаправляет на: https://www.apk-vervaldatum.nl/public/https://www.apk-vervaldatum.nl

Когда вы вызываете незащищенную версию без www: http://apk-vervaldatum.nl,

Сначала он перенаправляет на: https://www.apk-vervaldatum.nl

Затем перенаправляет на: https://www.apk-vervaldatum.nl/public/https://www.apk-vervaldatum.nl

Мой htaccess в корневой папке выглядит так:

*Options +FollowSymLinks 
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ public/$1 [L]*

Мои htacces в общей папке выглядят так:

*Options -MultiViews -Indexes 
RewriteEngine On # 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] 

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

person Dempsey de Koning    schedule 24.01.2019    source источник
comment
Вы пытались решить эту проблему внутри nginx или apache файлов конфигурации вместо .htaccess?   -  person Nikola Gavric    schedule 24.01.2019
comment
Привет Никола, я еще не сделал. Так как я не специалист в этой области. И я считаю, что это должно быть исправлено в первую очередь через файлы htaccess. Если не получится, рассмотрю другие варианты.   -  person Dempsey de Koning    schedule 08.02.2019


Ответы (2)


Здесь у вас есть способ принудительного использования HTTPS.

Go to AppServiceProvider:

namespace App\Providers;

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

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

Другой подход - изменение .htaccess:

RewriteEngine On

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

Удачи!

person Adam Kozlowski    schedule 24.01.2019
comment
Я пробовал .htaccess, но мне это не помогло. - person Dempsey de Koning; 08.02.2019
comment
вы пробовали с AppServiceProvider? - person Adam Kozlowski; 08.02.2019

ваш .htaccess должен быть:

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

    RewriteEngine On

    # Start with www 
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
    RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]


    RewriteCond %{HTTP:X-Forwarded-Proto} !https 
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


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

</IfModule>
person Saurabh Mistry    schedule 24.01.2019
comment
Когда я использую это, небезопасная версия с теперь www перенаправляется на: apk- vervaldatum.nl/public/index.php Может быть, мне следует изменить корневой htaccess при использовании этого? Сейчас это: Options +FollowSymLinks RewriteCond %{HTTPS} !on RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ public/$1 [L] - person Dempsey de Koning; 24.01.2019