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

ЕСЛИ ПОСЛЕ установки все равно после всех манипуляций прыгает на 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

Парни, подскажите, в конфигах обоих добавил букву S

сайт по httpS открывается а по обычному проткоолу вместо редиректа пишет страница НЕ НАЙДЕНА.

 

выкладываю свой htaccess

 

# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.

# 2. In your opencart directory rename htaccess.txt to .htaccess.

# For any support issues please visit: http://www.opencart.com

Options +FollowSymlinks

# Prevent Directoy listing
Options -Indexes

# Prevent Direct Access to files
<FilesMatch "(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))">
 Require all denied
## For apache 2.2 and older, replace "Require all denied" with these two lines :
# Order deny,allow
# Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/yandex_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]

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

### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that.

# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off

# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off

# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M

# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M

# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200

# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200

# 7. disable open_basedir limitations
# php_admin_value open_basedir none

### Display PHP errors 
### Uncomment the commands by removing the # sign in front of it.
# php_flag display_startup_errors on
# php_flag display_errors on
# php_flag html_errors on
# php_flag track_errors on
# php_value error_reporting "E_ALL"

 

Share this post


Link to post
Share on other sites
В 08.09.2019 в 14:42, Dotrox сказал:

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

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

 

 

Подскажите? мой пост чуть выше, а вы явно спец тут главный в таком вопросе.

Share this post


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

Парни, подскажите, в конфигах обоих добавил букву S

сайт по httpS открывается а по обычному проткоолу вместо редиректа пишет страница НЕ НАЙДЕНА.

 

выкладываю свой htaccess

 

 

так редирект не прописан.

сразу после RewriteBase /

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

в админке в настройках магазина включили SSL?

Share this post


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

 

так редирект не прописан.

сразу после RewriteBase /

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

в админке в настройках магазина включили SSL?

 

естественно в админке включил он же открывает по ssl но не редиректит.

 

дописал то что вы сказали, итог печальный https://prnt.sc/pxkez4

 

а вообще мне казалось что я его прописывал- https://prnt.sc/pxkgs3

но это тоже не работает пишет как я говорил выше что страница не найдена

Edited by Vasekvasil

Share this post


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

а вообще мне казалось что я его прописывал- https://prnt.sc/pxkgs3

Вам только казалось.

 

Я уже сто раз писал и в этой теме и в других... Но зачем читать? Лучше воткнуть первое, что нагуглилось, а потом начинать спрашивать то, на что уже есть давно ответы.

 

1. То, что вы вставили, это не редирект на https - это редирект для удаления www.

2. Все подобные редиректы должны быть исключительно после RewriteBase /. "После" означает прямо в следующей строке, а не где-то после куда захочется!

 

 

То, что выше предложил @Blast - это и есть правильный редирект на https.

 

 

Share this post


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

Вам только казалось.

 

Я уже сто раз писал и в этой теме и в других... Но зачем читать? Лучше воткнуть первое, что нагуглилось, а потом начинать спрашивать то, на что уже есть давно ответы.

 

1. То, что вы вставили, это не редирект на https - это редирект для удаления www.

2. Все подобные редиректы должны быть исключительно после RewriteBase /. "После" означает прямо в следующей строке, а не где-то после куда захочется!

 

 

То, что выше предложил @Blast - это и есть правильный редирект на https.

 

 

вот что появляется после того что предлжил Бласт https://prnt.sc/pxkez4

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.