Jump to content

Recommended Posts

Уважаемый @Dotrox , не могли бы вы проверить и мой .htaccess файл на правильность наполнения? Может быть что лишнее, а что-то лучше исправить\дополнить? Если вас не затруднит, не могли бы вы попутно пояснить, почему ту или иную строку нужно изменить\удалить? Прошу даже не столько потому, чтобы вы меня обучали, сколько облегчить жизнь следующим читателям и писателям, подобным мне. Заранее спасибо!

Спойлер

Options +FollowSymlinks
Options -Indexes


<FilesMatch "(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))">
 Require all denied
</FilesMatch>


RewriteEngine On
RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ //%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

 

Share this post


Link to post
Share on other sites

А почему вы редирект на https туда воткнули? Он должен быть под RewriteBase / (или хотя над...)

Share this post


Link to post
Share on other sites
15 часов назад, Mykhaylo сказал:

сколько облегчить жизнь следующим читателям и писателям, подобным мне.

Никому ничего не облегчит!

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

RewriteBase /

 

А ещё вы что-то забыли вот тут:

RewriteRule ^(.*)$ //%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Вы на какой протокол редиректите?

 

По идее, такой редирект при заходе по http должен привести к бесконечному циклическому редиректу (пока браузер не обрубит).

  • +1 1

Share this post


Link to post
Share on other sites
Добрый день, помогите решить проблему
Перенес сайт на другой хостинг, сменил DNS, установил SSL сертификат, сайт работал, но теперь выдает такую ошибку:
 
При соединении с site.com произошла ошибка. Узел получил действительный сертификат, но в доступе было отказано. Код ошибки: SSL_ERROR_ACCESS_DENIED_ALERT 
 
Подскажите в чем может быть проблема?

Share this post


Link to post
Share on other sites
8 часов назад, lanbar сказал:

При соединении с site.com произошла ошибка. Узел получил действительный сертификат, но в доступе было отказано. Код ошибки: SSL_ERROR_ACCESS_DENIED_ALERT

Мозилла?

Попробуйте анонимное окно.

 

Скорее всего, это проблема конкретно вашего браузера (персонально вашего).

  • +1 1

Share this post


Link to post
Share on other sites

Всем спасибо за тему.

Почитал и сам настроил редирект.

В файл htaccess добавил вот такой код
 RewriteCond %{HTTPS} off
 RewriteCond %{HTTP:X-Forwarded-Proto} !https
 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 RewriteCond %{HTTP_HOST} ^www\.сайт.ком\.ru$ [NC]

 

В файле config.php в корне исправил строчки для HTTPS

// HTTPS
define('HTTPS_SERVER', 'https://сайт.ком/');

 

В файле config.php в папке admin исправил строчки для HTTPS

define('HTTPS_SERVER', 'https://сайт.ком/admin/');
define('HTTPS_CATALOG', 'https://сайт.ком/');

 

Все работает. Спасибо!

Share this post


Link to post
Share on other sites
10 часов назад, Aspirinnka1 сказал:

RewriteCond %{HTTP_HOST} ^www\.сайт.ком\.ru$ [NC]

Вы здесь вторую строчку забыли.

RewriteCond - это условие редиректа, но не сам редирект. В следующей строке должна быть директива RewriteRule с указанием самого редиректа.

 

И домен там вписывать не обязательно (что особенно актуально для мультимагазинов).

 

Вот так выглядит полностью редирект удаления www (в универсальном варианте):

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

 

Share this post


Link to post
Share on other sites

Круть, спасибо. Переписал .htaccess.

 RewriteCond %{HTTPS} off
 RewriteCond %{HTTP:X-Forwarded-Proto} !https
 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
 RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Теперь правильно?

Share this post


Link to post
Share on other sites
3 часа назад, Aspirinnka1 сказал:

Теперь правильно?

Да.

 

И размещать всё это надо сразу под строкой с

RewriteBase /

 

Share this post


Link to post
Share on other sites
15 часов назад, Dotrox сказал:

И размещать всё это надо сразу под строкой с


RewriteBase /

о как. а я разместил в самом начале файла после Options +FollowSymlinks

 

А у меня после RewriteBase / идет еще куча какие-то условий :

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

 

Просто добавить сюда в конец?

 

Share this post


Link to post
Share on other sites
13 часов назад, Aspirinnka1 сказал:

Просто добавить сюда в конец?

В том и суть, что нет!

Я потому и написал об этом, что большинство именно так и делает, просто дописывает в конец думая, что это не имеет значения.

 

Эти редиректы должны быть именно под строкой с

RewriteBase /

Не "где-то" под ней, а именно сразу под ней.

 

Редиректы обрабатываются в порядке их следования в .htaccess и редирект, который отвечает за работу ЧПУ в ОК (последние 4 строки), всегда должен быть последним!

Share this post


Link to post
Share on other sites
В 16.08.2019 в 01:49, Dotrox сказал:

Я потому и написал об этом, что большинство именно так и делает, просто дописывает в конец думая, что это не имеет значения.

однако... Спасибо большое! Написал сразу после RewriteBase /

RewriteBase /
 RewriteCond %{HTTPS} off
 RewriteCond %{HTTP:X-Forwarded-Proto} !https
 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
 RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

 

А можно еще наивный вопрос? Когда у меня редиректы были в начале htaccess указаны, вродь же все работало. Ну я проверил несколько страниц, админку - везде https был. Как влияет перенос редиректа под RewriteBase / ?

Share this post


Link to post
Share on other sites
14 минут назад, Aspirinnka1 сказал:

Когда у меня редиректы были в начале htaccess указаны, вродь же все работало. Ну я проверил несколько страниц, админку - везде https был. Как влияет перенос редиректа под RewriteBase / ?

В вашем случае никак, кроме более логичного размещения.

 

Как я уже писал выше, большинство людей дописывает редиректы в конец, а не в начало и вот тогда перенос влияет и существенно.

Суть в том, что все подобные редиректы должны быть перед редиректом, который нужен для работы ЧПУ в ОК, иначе в ссылках появляется мусор и другие глюки.

  • +1 1

Share this post


Link to post
Share on other sites

Я понял. Спасибо, все понятно теперь.

Share this post


Link to post
Share on other sites

ЕСЛИ ПОСЛЕ установки все равно после всех манипуляций прыгает на http, то я сделал так 

 

1. В файле system/library/url.php

2. Есть строки:

public function link($route, $args = '', $secure = false) {
        if ($this->ssl && $secure) {
            $url = $this->ssl . 'index.php?route=' . $route;
        } else {
            $url = $this->url . 'index.php?route=' . $route;
        }

МЕНЯЕМ:

public function link($route, $args = '', $secure = false) {
        if ($this->ssl && $secure) {
            $url = $this->ssl . 'index.php?route=' . $route;
        } else {
            $url = $this->url (НА SSL) . 'index.php?route=' . $route;
        }

И ВСЕ РАБОТАЕТ. 

 

Share this post


Link to post
Share on other sites
6 часов назад, kd21 сказал:

после всех манипуляций

Видимо, не всех. У вас же там $secure = false.

Именно это надо исправить, о чём я уже не раз писал в этой теме.

 

Но в случае кривых модулей, которые адрес сайта берут прямо из конфига, поможет только прописывание в конфигах везде ссылки с https. И это, пожалуй, одновременно и самый простой и самый надёжный способ. В случае мультимагазинов для дополнительных магазинов это надо делать в админке.

Share this post


Link to post
Share on other sites
23 часа назад, Dotrox сказал:

Видимо, не всех. У вас же там $secure = false.

 

ssl прописал и все норм, при заходе сразу заходит https.

 

$secure = false а тут что надо прописать ....  

Share this post


Link to post
Share on other sites
17 часов назад, kd21 сказал:

$secure = false а тут что надо прописать ....  

Заменить false на true.

Эффект будет такой же, как и от вашей правки, но без поломки логики этого кода.

 

 

Share this post


Link to post
Share on other sites
7 часов назад, Dotrox сказал:

Заменить false на true.

Эффект будет такой же, как и от вашей правки, но без поломки логики этого кода.

 

 

спасибо.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.