Маршрутизация префикса Cakephp 3 не работает на сервере Linux после добавления SSL

Версия CakePHP: 3.6

Я создал проект с 3-мя префиксами маршрутов: admin, vendor а также customer.

На моей локальной машине все работает нормально, все префиксы работают нормально. Я переместил свой проект на удаленный сервер Linux, и сначала он работал нормально. После того, как я добавил сертификат SSL, я захожу на свой сайт следующим образом:

https://subdomain.myproject.com/vendor

Это не работает. Браузер продолжает загружаться, и через некоторое время он показывает, что этот сайт недоступен, для ответа потребовалось слишком много времени.

Если я добавлю косую черту в конце, он будет работать нормально:

https://subdomain.myproject.com/vendor/

Помимо префикса поставщика, другие префиксы работают нормально, как и ожидалось. Это потому, что у CakePHP есть папка поставщика, или это из-за перенаправления сервера?

Пожалуйста, помогите мне, как мне перенаправить http на https? Я добавил что-то в.htaccess, но он также показывает проблему "слишком много перенаправлений".

1 ответ

Если у вас есть mod_dirвключен в Apache, он по умолчанию должен автоматически перенаправлять ваши запросы на тот же URL-адрес с косой чертой в конце. Из документации Apache:

Перенаправление "завершающей косой чертой" выполняется, когда сервер получает запрос URL-адреса http://servername/foo/dirname, где dirname - это каталог. Для каталогов требуется косая черта в конце, поэтому mod_dir перенаправляет на http://servername/foo/dirname /

Скорее всего, у вас это включено, но проверьте.

это потому, что у cakephp есть папка поставщика

Каталог vendor не должен быть общедоступным в CakePHP, и я не ожидал, что возникнут проблемы с наличием vendor префикс маршрутизации.

как перенаправить http на https

Ваш.htaccess должен выглядеть примерно так, чтобы принудительно выполнить перенаправление HTTPS и обеспечить правильную работу CakePHP:

<IfModule mod_rewrite.c>

    RewriteEngine On
    RewriteBase /

    # SSL redirect
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP:X-Forwarded-Proto} =http
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    # Required for CakePHP
    RewriteRule ^$ webroot/ [L]
    RewriteRule (.*) webroot/$1 [L]

</IfModule>
Другие вопросы по тегам