We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 51969
    • 3 Posts
    Добрый день!

    Переводил сайт с http на https и вроде бы все благополучно получилось при работе двух версий http://мойсайт.com/ и https://мойсайт.com/. Но было необходимо сделать редирект с http на https, для этого я использовал директивы из стандартного файла htaccess:
    # Rewrite secure requests properly to prevent SSL cert warnings, e.g. prevent 
    # https://www.domain.com when your cert only allows https://secure.domain.com
    RewriteCond %{SERVER_PORT} !^443
    RewriteRule (.*) https://мойсайт.com/$1 [R=301,L]
    
    # The Friendly URLs part
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    


    Редирект работает отлично, но перестали работать ЧПУ, вместо каноничных https://мойсайт.com/news/ выдает https://мойсайт.com/?q=news/. Если закомментировать редирект, то ЧПУ работают как надо и в http и в https версиях.
    Так же пробовал подобный htaccess(и еще много других из поиска):
    # HTTPS goes first, with ending [L]
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
    
    # For Friendly URLs
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    


    С таким вариантом вообще сайт перестает работать поскольку происходит множественная переадресация.
    Писал в службу поддержки хостинга на что получил ответ, что проблема не с их стороны.
    Возможно кто-нибудь сталкивался с подобной проблемой или имеет какие-нибудь соображения на этот счет?

    This question has been answered by tiedamn. See the first response.

      • 50959
      • 57 Posts
      поменяйте местами обзацы: с Friendly URLs... и # HTTPS goes first...
        • 51969
        • 3 Posts
        Quote from: monitor at Nov 10, 2016, 08:43 PM
        поменяйте местами обзацы: с Friendly URLs... и # HTTPS goes first...

        Пробовал, но к сожалению никакого эффекта.
          • 44064
          • 185 Posts
          @tiedamn, добрый!
          А у вас Apache все запросы обрабатывает, или, скажем, стоит за NGINX? Если такое, обратите внимание на проброску правильных заголовков, намучался с этим в свое время, это была проблема из области настроек хостера, флаг HTTPS=on не отрабатывал, такой костыль в core/config/config.inc.php помогал:
          // fix for NGINX + APACHE pair config
          if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
              $_SERVER['HTTPS'] = 'on';
          }
          
          if(defined('PHP_SAPI') && (PHP_SAPI == "cli" || PHP_SAPI == "embed")) {
              $isSecureRequest = false;
          } else {
              $isSecureRequest = ((isset ($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') || $_SERVER['SERVER_PORT'] == $https_port);
          } 


          Посмотрел старый конфиг(работал сайт с https, потом временно отключили...ну и намусорено же там теперь:) ),там так:
          RewriteEngine On
          RewriteBase /
          
          #RewriteCond %{REQUEST_URI} /index.php
          #RewriteCond %{QUERY_STRING} ^\z
          #RewriteRule ^(.*)$ https://site.ru/? [R=301,L]
          
          #RewriteCond %{HTTP_HOST} .
          #RewriteCond %{HTTP_HOST} !^site\.ru [NC]
          #RewriteRule (.*) https://site.ru/$1 [R=301,L]
          
          #RewriteCond %{SERVER_PORT} !^443
          #RewriteRule (.*) https://site.ru/$1 [R=301,L]
          
          # The Friendly URLs part
          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
          
          


          Соответственно, один из закоментированных кусков рабочий, осталось вспомнить, какой. Friendly URLs часть идет всегда после редиректов для https
            Anton Tarasov
            MODX Developer

            Email: [email protected]
            Web: antontarasov.com
          • discuss.answer
            • 51969
            • 3 Posts
            Quote from: himurovi4 at Nov 15, 2016, 06:47 AM
            @tiedamn, добрый!

            ...

            Соответственно, один из закоментированных кусков рабочий, осталось вспомнить, какой. Friendly URLs часть идет всегда после редиректов для https

            Спасибо, к сожалению ваш метод так и не попробовал, так как нашел рабочий вариант, в моем случае надо было в файл htaccess добавить следующие строки:

            RewriteEngine On
            RewriteBase /
            RewriteCond %{ENV:REDIRECT_STATUS} !^$
            RewriteRule .* - [L]


            Может быть кому пригодиться.

              • 49556
              • 19 Posts
              Quote from: tiedamn at Nov 15, 2016, 01:02 PM
              Quote from: himurovi4 at Nov 15, 2016, 06:47 AM
              @tiedamn, добрый!

              ...

              Соответственно, один из закоментированных кусков рабочий, осталось вспомнить, какой. Friendly URLs часть идет всегда после редиректов для https

              Спасибо, к сожалению ваш метод так и не попробовал, так как нашел рабочий вариант, в моем случае надо было в файл htaccess добавить следующие строки:

              RewriteEngine On
              RewriteBase /
              RewriteCond %{ENV:REDIRECT_STATUS} !^$
              RewriteRule .* - [L]


              Может быть кому пригодиться.

                • 49556
                • 19 Posts
                Спасибо! Только это и помогло! А то уже мозги начали в трубочку сворачиваться.