Измените Opencart 2.2.0.0. ссылки внутреннего меню с http на https

#internal-link

#internal-link

Вопрос:

Интернет-магазин основан на операционной системе 2.2.0.0. На сайте установлен и корректно реализован ssl на всех уровнях.

Проблема в том, что ссылки на категории в выпадающих меню в заголовке остаются http://, который успешно перенаправляет с 301 на версию https: // при нажатии.

Это не лучший способ с точки зрения SEO, поэтому моя цель — просто изменить ссылки на https: // и иметь код ответа 200 для всех внутренних ссылок.

Код, который извлекает ссылки и устанавливает их в выпадающем меню, является:

         <nav id="menu" class="navbar"> <!-- add class name as 'mega-menu' 
        LIKE class="mega-menu" -->
        <div class="navbar-header collapsed" data-toggle="collapse" data- 
        target=".navbar-ex1-collapse"><span id="category" class="visible-xs"><?php echo $text_category; ?></span>
    </div>
    <div class="collapse navbar-collapse navbar-ex1-collapse">
      <ul class="nav navbar-nav">
<?php //print_r($categories); ?>
        <?php foreach ($categories as $category) { ?>
        <?php if ($category['children']) { ?>
            <li class="dropdown"><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>

            <div class="dropdown-menu">
            <div class="dropdown-inner">
              <?php foreach (array_chunk($category['children'], ceil(count($category['children']) / $category['column'])) as $children) { ?>
                <ul class="list-unstyled childs_1 <?php if($category['column']<=1) echo 'single-dropdown-menu'; else echo 'mega-dropdown-menu'; ?>">

                <?php foreach ($children as $child) { ?>
                    <!-- 2 Level Sub Categories START -->
                    <?php if ($child['childs']) { ?>
                      <li class="dropdown"><a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a>

                          <div class="dropdown-menu">
                          <div class="dropdown-inner">
                          <?php foreach (array_chunk($child['childs'], ceil(count($child['childs']) / $child['column'])) as $childs_col) { ?>
                            <ul class="list-unstyled childs_2">
                              <?php foreach ($childs_col as $childs_2) { ?>
                                <li><a href="<?php echo $childs_2['href']; ?>"><?php echo $childs_2['name']; ?></a></li>
                              <?php } ?>
                            </ul>
                          <?php } ?>
                          </div>
                          </div>

                      </li>
                    <?php } else { ?>
                      <li><a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a></li>
                    <?php } ?>
                    <!-- 2 Level Sub Categories END -->
  

Есть ли способ переписать все внутренние ссылки, чтобы они начинались с https: // вместо http://

В области администрирования операционной системы такой опции нет.

Насколько я могу видеть, магазин использует пользовательскую тему.

При необходимости я могу предоставить любой код.

Заранее спасибо!

Ответ №1:

Правильно закодированная тема должна использовать это из конфигурационных файлов, которых в OpenCart 2:

 {web root}/config.php
{web root}/admin/config.php
  

Замените все экземпляры http на https, очистите все кэши и повторите попытку.

Если это не сработает, это означает, что ваша тема плохо закодирована, но не все потеряно, вы можете заменить «http: //» во всех файлах в папке темы на любую хорошую IDE (например, Notepad сделает это, я использую IDE под названием Kate, которая превосходна и делает это).

Ваша папка темы будет находиться по адресу:

 {web root}/catalog/view/theme/{your theme name}
  

Вы можете заменить «http://» на «https: //» или, если вы, возможно, захотите вернуться к http в будущем, вы могли бы заменить «http://» просто на «//», который сообщает браузеру использовать тот же протокол, что и текущая страница, и поэтому является более гибким и динамичным.

Комментарии:

1. Спасибо за советы, но оба конфигурационных файла настроены правильно. Я также хотел вручную изменить http: // example.com/category на httpS: // example.com/category но в моих файлах нет таких URL-адресов. Я предполагаю, что где-то есть правило, которое выбирает путь или что-то в этом роде…

2. «Я предполагаю, что где-то есть правило, которое выбирает путь или что-то в этом роде» Если тема закодирована правильно, то она получит путь из файлов конфигурации. Если нет, то это, вероятно, будет жестко запрограммировано, что означает, что вам придется заменить http: // во всех файлах. «в моих файлах нет таких URL-адресов», поэтому, если вы искали «https» во всех файлах вашего сайта, а его там нет, вам следует выполнить экспорт базы данных и выполнить поиск в ней также «https».