Laravel перенаправить на HTTPS с .htaccess - PullRequest
0 голосов
/ 28 июня 2018

Я использую Laravel 5.5.

В Laravel есть пара .htaccess, и в моем случае я работаю с .htaccess в корневом каталоге и в общей папке.

Все это время я использовал этот код в корне .htaccess для настройки общей папки:

RewriteEngine On

RewriteRule ^(.*)$ public/$1 [L]

и мой сайт загружается, когда я захожу на главную страницу После этого я захотел принудительно перенаправить все страницы, используя https. Итак, сначала, когда я пытаюсь поместить этот код в корневой каталог .htaccess, он ничего не делает. Он продолжает загружаться с http.

RewriteEngine On

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

Ну, это имеет смысл, потому что когда я настраиваю общую папку, я должен поместить перенаправление в .htaccess, который находится внутри общей папки.

Хорошо, я попробовал вот так:

Корень .htaccess:

RewriteEngine On

RewriteRule ^(.*)$ public/$1 [L]

Публичный .htaccess

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

    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]
</IfModule>

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

Эта комбинация работает. Это перенаправляет на https. Но есть одна проблема сейчас. Когда я вхожу на домашнюю страницу или открываю веб-сайт из результатов поиска, URL выглядит следующим образом:

https://mywebsite.com/public/en

Когда я захожу на другие страницы, у меня нет проблем, связанных с «публичным» путем в URL. Итак, допустим, я хочу открыть страницу контактов, URL-адрес https://mywebsite.com/en/contact. Отлично.

Как можно избежать этой "публичности" в моем URL при входе на домашнюю страницу?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018
RewriteEngine On    
RewriteCond %{HTTPS} !=on    
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

источник

0 голосов
/ 28 июня 2018

Это должно удалить public из URL.

RewriteRule ^(.*)$ public/$1 [L]

Я не уверен, должно ли это быть выше

# Handle Front Controller... 

или внутри? Может быть, попробовать один из них и посмотреть, работает ли один из них?

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/$1 [L]
RewriteRule ^ index.php [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...