Задать вопрос
  • Почему не работает 301 редирект для конкретной страницы в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    1. скорее всего у вас nginx спереди стоит и он отдает статические файлы не доходя до apache как следствие и ваш редирект не работает.
    2. реврайт он нужно 1 раз на весь файл.
    3. самое главное .htaccess читается сверху вниз по кругу до полного устаканивания.
    так что очень важно чтоб частный случай был выше общего, иначе сработает общее правило.
    то есть файл не применяется весь сразу а строка за строкой и если сверхуе сть правило которое забирает контент, то до 2 правила дело не дойдет.
    4. если вы думаете что флаг L говорит что все редирет больше не делать то нет, это не про то
    так что поднимите ваш редиректор выше.
    5. не забывайте экранировать точки в условие.
    6. https://bertal.ru/index.php?a566754
    закиньте вашу ссылку и посмотрите что происходит тут будет видно всю последовательность редиректов.
    Ответ написан
    Комментировать
  • Почему на домене загружается совсем другой сайт?

    shambler81
    @shambler81 Куратор тега htaccess
    в лес не ходи у вас на одном сайте есть https на другом нет, долго обяснять как это работает просто так быть не может и он подставляет "ближайший по алфавиту сайт" .
    просто убедитесь что у ВСЕХ сайтов есть https и он валиден
    Сами конфиги вполне валидные, вопрос в том как работает веб сервер
    Он конфиг подбирает из заголовка браузера берет имя сайта на основание этой переменной подставляет нужный конфиг, но он не может взять данные с https не дав ключи, тут получается ситуация кто раньше яццо или курица, в результате веб сервер находит выход подставляет ближайший ключ, и естественно конфиг от него , получаем сайт вообще левый
    Надеюсь вам стало более понятно например такой конфиг 000-default.conf
    чтоб быть гарантированно первым
    Ответ написан
    1 комментарий
  • Как блокировать программе доступ в интернет в зависимости от моего IP?

    если у тебя роутер типа keenetic
    то для нрих есть инструкции.
    1. ПОдключаешь впн и тд доп подключением.
    2. ДОбавляешь таблицы маршрутизай загружая файл.
    В результате у тебя интернет локальный
    а для ютьюба и тд используются маршруты через впн.
    Ответ написан
    Комментировать
  • Как удалить часть слов?

    regexp для этого не совсем подходит есть соответствующие библиотеки для каждого языка.
    Правельно было бы пользовать именно их
    <div\s+class=["']fw-bold["']\s*>\s*(Финансовая отчетность)(?:\s+.*)?<\/div>

    — ищет тег с классом "fw-bold", допускает наличие пробелов и кавычек.
    \s* — допускает пробелы перед содержимым.
    (Финансовая отчетность) — захватывает нужную часть текста.
    (?:\s+.*)? — необязательная не захватывающая группа, которая включает все, что идет после нужной части, например, "за 2024 год".
    <\/div> — закрывающий тег .

    <?php
    
    $html = '
    <div class="fw-bold">Финансовая отчетность за 2024 год</div>
    ';
    
    $pattern = '/(<div\s+class=["\']fw-bold["\']\s*>)(.*?Финансовая отчетность)(?:\s+.*)?(<\/div>)/i';
    
    // Замена: оставляем только начало, нужный текст и закрывающий тег
    $replacement = '$1$2$3';
    
    $result = preg_replace($pattern, $replacement, $html);
    
    echo $result;
    ?>
    Ответ написан
  • Как сделать редирект выше по списку приоритетнее?

    shambler81
    @shambler81 Куратор тега htaccess
    файл .htaccess читается по кругу сверу вниз до полного установления урл
    ТАК ЧТО в начале частные случаи потом общие.
    В твомем сучае просто подними нужный тебе редирект выше и он сработает до второго.
    И все будет работать.
    так же можно сделать через реврайт конд там есть отрицания !
    Не забудь скинуть кеш редиректов
    Ответ написан
    Комментировать
  • Как с помощью регулярного выражения получить oid и id видео из ссылки?

    (?:https?:\/\/)?(?:www\.|m\.)?vk\.com\/(?:video\?z=video|video|clip)(-?\d+)_(\d+)
    Вывод
    URL: https://vk.com/video-123456_789012
    oid: -123456, id: 789012
    URL: https://m.vk.com/video-123456_789012
    oid: -123456, id: 789012
    URL: https://vk.com/video?z=video-123456_789012
    oid: -123456, id: 789012
    URL: https://vk.com/clip-123456_789012
    oid: -123456, id: 789012
    Ответ написан
  • Как вылечить файл сайта на 1С-Битрикс от трояна?

    shambler81
    @shambler81 Куратор тега 1С-Битрикс
    https://virusdie.com/
    добавь сайт просканируй там скорее всего не один.
    2. обнови в прошлом году была очень большая уязвимость, или даже в позапрошлом, короче обнови битрикс.
    3. что-то руками удалить что -то почистить.
    grock ai тебе в помощь сканируй весь список файлов сомнительных.
    получи их список попроси грок написать тебе код коорый их все прочитает и соранит в 1 файлл.
    отправь егму этот файл, дальше спрашивай и он тебе сделает.
    если в пхп разбираешься то с легкостью и сам почистишь.
    Ответ написан
    Комментировать
  • Какие у битрикса требования к серверу?

    shambler81
    @shambler81 Куратор тега 1С-Битрикс
    Ответ простой
    1 nvme
    2 количество ядер или частота- ответ частота, на 1 ядро в приоритете.

    5.2Ghz 1 ядро будет быстрей чем 3.2 xeon gold 32 ядра.
    я бы конечно не брал прям совсем 1 ядро но логика такая, частота на ядро важнее всего остального.
    Оперативка
    после пхп 7.0 оперативку стал кушать сильн о меньше 8 хватит но если есть возможность взять 16, больше выделить под бд, но по факту и 8 хватит.
    Ответ написан
    Комментировать
  • Где увидеть актуальные значения параметров apache?

    1. нет не сильно в редхате чуть даже попроще.
    По факту если уберешь тему с инклудами то тоже самое и будет вся разница apache2 и httpd
    Конфиги инклудятся но там ничего страшного нет.
    кинь конфиг для домена,
    не юзай дефолтный конфиг он не для частного случая а общего, его вообще лучше не трогать
    Ответ написан
    Комментировать
  • Какие есть инструменты минификации shell кода или bash-скриптов?

    Бро а скрипт в студию можно ?
    как вариант GPT вам в помощь но нужен скрипт чтоб сказать что тут можно сделать, но минифицировать текст ? а есть и смысл у вас там мегабайт прям чистого тексат?
    Ответ написан
  • Не получается сохранить данные в админ панели битрикс коробка, каким папкам нужно выдать права?

    shambler81
    @shambler81 Куратор тега Linux
    find /home/bitrix/www  -type d -exec chmod 0755 {} \;  # ставим дефолтные права на директории
    find /home/bitrix/www -type f -exec chmod 0644 {} \;   #  ставим дефолтные права на файлы
    chown -R bitrix:bitrix /home/bitrix/www  # Меняем владельца и группу.  Возьмите за правило для этой команды писать только полный путь, никогда не делайте . или ./ поскольку при первой же ошибке вы можете убить систему, работает она не в пример быстрей чем chmod

    У вас есть пользователь ssh bitrix через него и редактируйте, он для этого и сделан чтоб вы всегда работали от той группы и юзера.
    Вот более подробно что такое chown и почему не chmod
    67a321d4b7eb7208275308.jpeg
    По факту ты выдал 3 разных правила
    К примеру полный доступ
    RWX - рид врайт запуск
    Но у тебя три группы пользователей каждой свои права
    777 - это все права всем группамм (аналог RWX RWX RWX)
    групп три, но тебе нужно перемещяться между этими группами
    так если ты владелец то у тебя первая семерка если автаризован вторая если все остальные третья
    если у вас 744 то соответственно полные права только у владельца, chown собственно и меняет владельца и группу. Сами же цифры это всего вариации
    RWX
    R-X
    --X
    и так далее поскольку всего их 8 можно перевести 2ичную систему в 8 речную обозначив 1 символом вместо 3
    обрати внимание на скрине сделан один файл от root:root
    рут не является владельцем и к примеру 755 644 на него подействуют как 755 644 а если ты битрикс:битрикс то твои права уже другие 755 644


    Далее заходим в панель убеждаемся что с сессиями все хорошо и они работают.
    https://YourSite.ru/bitrix/admin/site_checker.php?...
    1. Работа портала - если б24 проверяем
    2. тест конфигурации (убираем все красное)
    3. Проверка доступа к диску ( полная проверка )
    4. Принудительно удаляем весь кеш.
    https://YourSite.ru/bitrix/admin/cache.php?lang=ru
    Очистить файловый кеш ) весь
    Ответ написан
    Комментировать
  • Проблема с подключением CSS файлом на 1CБитрикс?

    shambler81
    @shambler81 Куратор тега 1С-Битрикс
    Открой на ююбе видео по битриксу там есть хорошие обучали https://www.youtube.com/watch?v=hdgs1AzoShc и прям со своим шаблоном иди по ниим.
    <!DOCTYPE html>
    <html lang="en">
            <head>
            <meta content="width=device-width, initial-scale=1.0" name="viewport">
            <?$APPLICATION->ShowHead();?>
            <title><?$APPLICATION->ShowTitle();?></title>
    
            <link href="/local/templates/top_com/assets/img/favicon.webp" rel="icon">                                        <!-- Favicons -->
            <link href="/local/templates/top_com/assets/img/apple-touch-icon.webp" rel="apple-touch-icon">                   <!-- Favicons -->
    
    <?
            use Bitrix\Main\Page\Asset;
            Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/assets/vendor/animate.css/animate.min.css');                        // Vendor CSS
            Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/assets/vendor/aos/aos.css');                                                        // Vendor CSS
            Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/assets/vendor/bootstrap/css/bootstrap.min.css');            // Vendor CSS
            Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/assets/bootstrap-icons/bootstrap-icons.css');                       // Vendor CSS
            Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/assets/vendor/bootstrap-icons/bootstrap-icons.css');        // Vendor CSS
            Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/assets/vendor/boxicons/css/boxicons.min.css');                      // Vendor CSS
            Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/assets/vendor/glightbox/css/glightbox.min.css');            // Vendor CSS
            Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/assets/vendor/remixicon/remixicon.css');                            // Vendor CSS
            Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/assets/vendor/swiper/swiper-bundle.min.css');                       // Vendor CSS
            Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/assets/css/style.css');                                                                     // Main CSS
            Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/assets/css/socializer.min.css');                                            // https://www.aakashweb.com/apps/social-buttons-generator/
          
            Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . '/assets/vendor/aos/aos.js');                                                          // https://michalsnik.github.io/aos/
            Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . '/assets/vendor/glightbox/js/glightbox.min.js');                       // https://biati-digital.github.io/glightbox/#examples
            Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . '/assets/vendor/bootstrap/js/bootstrap.bundle.min.js');    // Bro, bootstrap 5
            Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . '/assets/vendor/isotope-layout/isotope.pkgd.min.js');          //https://isotope.metafizzy.co/
            Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . '/assets/vendor/swiper/swiper-bundle.min.js');                         //https://swiperjs.com/demos
            Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . '/assets/js/main.js');
    
            Asset::getInstance()->addString('<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Raleway:300,300i,400,400i,500,500i,600,600i,700,700i|Poppins:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet">');
    ?>
          </head>
       <body>
    <div id="panel">
            <?$APPLICATION->ShowPanel();?>
    </div>
    ..
    Ответ написан
    Комментировать
  • Nginx + certbot: как переместить один из поддоменов на другой сервер?

    1. на старом сервере все работает.
    2. Копируешь сайт а.site.ru на новый сервер
    3. копируешь СГЕНЕРЕНЫЕ ключи туда -же и включаешь их в nginx
    у себя на компьютере в .host файл вписываешь "1.1.1.1 a.site.ru" - где 1.1.1.1 -это новый айпи
    Перезапускаешь браузер на компе поключаешься првоеряешь сайт.
    После этого переписываешь А запись и удаляешь запись из host
    Как запись переехала, гневишь сертификат уже локально.
    Соответственно ставишь certbot letsencrypt через apt или что там у тебя ( ВАЖНО при тестах создани ключа добавляй --dry-run" и как только видеш что все сработало убираешь тесовый режим и гневишь уже реально сертификат ( так он не тратит 5 попыток в день)
    ВСЕ. указывая только домен a.site.ru www.a.site.ru
    ну или создаешь wildcard сертификат и юзаешь его и там и там.

    Как вариант поставь веб панель дабы они ставятся с 1 клик и бесплатные ( только на чистую ОС)
    ispconfig3
    aapanel только английский
    vestacp
    brainycp русский проприетарный но бесплатный
    И там уже создаешь сайт и галочкой создать сертификат.

    aapanel-letsencrypt-3.jpg.webp
    Ответ написан
    Комментировать
  • Как нужно настроить сетевые мосты чтобы подключаться по ssh, из одной гостевой Virtual Box машины к другой?

    shambler81
    @shambler81 Куратор тега Linux
    Блин я вот даже зашел и проверил правильно ли ответит GPT
    и да правильно, вообще не понимаю зачем такие вопросы задавать.
    скопируй свой вопрос и вставь в GPT
    он дат тебе инструкцию.
    Ответ написан
    Комментировать
  • Нужно по файловому серверу на Linux в два географически отдаленных филиала, какие есть варианты синхронизировать списки пользователей и файлы?

    shambler81
    @shambler81 Куратор тега Linux
    Отпишусь сюда как версию а не комментарий поскольку считаю это действительно единственным правильным решением.
    В вашем решение есть 1 минус.
    Вы пытаетесь изобрести транзакцию в том месте где ее по факту нет.
    Для параллельного изменения данных используется sql и писаться в файлах реализовать вполне возможно но как минимум как операция на гланды через ..пу.
    Дабы собрать сейчас веб интерфейс можно через GPT за минуту.
    если сли это документ, то гугл докс вам в помощь, или Битрикс24 документы, если форма то гугл формы.
    Но все эти решения так или иначе работают через транзакции в sql. Собственно это основная причина вообще существования самого sql и все хранят данные в нем а не в файлах именно по этой причине.

    Может если вы опишите больше вводных данных, с размерами способом применения будет более понятны причины и следствия а так же могу и измениться решения.
    К примеру это файл с логинами и паролями которые использует компания для подключений к клиентам.
    Ответ написан
    Комментировать
  • Как обновить сайт с сохранением старых роутов с использование Permanent Redirect?

    Здрасти приехали.
    1. Собираешь список ссылок (можно в веб мастере взять)
    2. поскольку новая структура то ссылки естественно ручками было стало в экселе. ( структкура кстати должна была быть сделана до начала проектирования нового сайта дабы ты ЧПУ делал уже максимально похожую в тех местах где это возможно)
    3. загружаем https://donatstudios.com/RewriteRule_Generator

    Проверяем стваим.
    Теперь частые вопросы
    1 - че все руками ? да
    2. два урл старый и новый или толкьо новый? - ответ только новый и редирект 301.
    3. как сделать чтоб не просели позиции (никак просядут пока сайт будет индексироваться но посколку у него будет лучше поведенческий фактор он должен подняться потом) но естественно не обязан.
    4. Пейджерный че делать с ней ? - а ее не должно быть в индексе только первая страничка. в99% случаях это справедливо.
    5 что если нужно все-же индексировать ? уже ничего вы должны были на этапе проектирвоания убрать свойства и фильтры в разные места. под свойства сделать структуру под фильтры ниечего.
    в идеале на сайте не должно быт ни 1 индекса с GET
    6. много страниц с GET (фильтыры) или нет - нет, нах не нужны уже как лет 10.
    Лучше 300 с хорошим поведением чем 300000.

    2 способо эксклюзивный но имеет место быть.
    если у тебя новый сайт но в нем откровенно некуда вести часть контента. и делать его желания нет.
    то тебе нужно чтоб новый сайт отдавал новый контент на тех урл на которых ЧПУ отдает что-то а там где на новом сайте нет, нужно отдавать старый сайт.
    В 404.php впихываем (перед отдачей кода естественно) php proxy который отдает старый сайт с домена прописанного в хосте локально. или лежащего на другом домене, по дороге меняя все нужные пути.
    я такое делал и даже работает.
    Логика такая
    200- ок работает движок
    404 - уходит в пхп файл который пытается найти 200 на стороне другого сайта и подменяет себя им, если не находит там 200 то соответственно отдает 404.
    все занимает около 300 строк кода.
    НО это эксклюзив
    Из плюсов такой реализации это 1 файл пхп который кодер с легкостью поймет, никаких костылей с nginx
    Ответ написан
    Комментировать
  • Использование переменных в SED bash скрипты?

    Вариант 1
    # Запрашиваем новый порт для SSH
    echo "Введите новый порт для SSH"
    read newport
    sed -i "s/#Port 22/Port $newport/I" /etc/ssh/sshd_config
    systemctl restart sshd.service
    echo "Порт изменен на $newport"

    Для отладки вместо -i поставь -e (изменения будет только в выводе)

    Однако если ты пишешь скрипт рекомендую сразу писать все функции, не забыть про проверки, а еще лучше вынести их вообще в отельную функцию, но это я уже уплыл по древу.
    Вариант 2
    #!/bin/bash
    
    # Функция для изменения порта SSH
    change_ssh_port() {
        local newport=$1  # Принимаем новый порт как аргумент функции
    
        # Проверяем, что порт является числом и находится в допустимом диапазоне
        if ! [[ "$newport" =~ ^[0-9]+$ ]] || [ "$newport" -lt 1 ] || [ "$newport" -gt 65535 ]; then
            echo "Ошибка: Порт должен быть числом от 1 до 65535."
            return 1
        fi
    
        # Заменяем строку с комментарием на новый порт в конфигурационном файле SSH
        sed -i "s/#Port 22/Port $newport/I" /etc/ssh/sshd_config
    
        # Проверяем, что конфигурация SSH корректна
        if sshd -t; then
            # Перезапускаем службу SSH для применения изменений
            systemctl restart sshd.service
            echo "Порт изменен на $newport"
        else
            echo "Ошибка: Конфигурация SSH некорректна. Изменения не применены."
            return 1
        fi
    }
    
    
    echo "Введите новый порт для SSH:"
    read newport  # Читаем новый порт от пользователя
    
    # Вызываем функцию с введенным номером порта
    change_ssh_port "$newport"
    Ответ написан
    Комментировать
  • Какой sata ssd максимально быстрый?

    посмотри поддерживается ли у тебя в принципе прошивка биос на Nvme диски и купи себе переходник на PCIe
    он дешевый или купи сразу диск формата pcie не забывай что m.2 это pci-e без каких-либо костылей.
    просо в другом формате, как они тебе будут продавать ультрасовременный порт 30 летней давности, тогда же ты задашь вопрос нах... вы мне продавали никому не нужный тормозной сата, когда у вас все это время был pcie, по этому они его перевернули уменьшели и сказали новый порт.
    Обрати внимание что загрузка с этого устройства потребует прошивки соответствующей на биос.
    Если е он посто под файлы то без проблем 100%
    Ответ написан
    4 комментария
  • Как запустить сценарий, при переходе на картинку?

    За это должно отвечать ЧПУ движка а не try_files
    думаю это самое адекватное поведение, генерацию урлов должен делать движок а не NGINX
    Как крайний вариант трай файл не должен находить их а следовательно 404
    и уже 404.php в котором движок подключен разумеется, разруливает этот урл (только естественно до отдачи кода 404!!!)
    Добавьте соответствующее исклюение в .htaccess
    чтоб эти урл уходили на движок
    Ответ написан
    Комментировать
  • Как привязать домен к серверу nginx?

    Купить доменное имя
    Припарковать его на любой ДНС сервер - NS1 NS2 вот это.
    В днс зоне создать А запись с IP
    Купить этот айпи, и рестартануть подключение, убедится что он доступен.
    Пробпросить порты на комп.
    в брендмауере открыть порты (обязательно) - если у тебя виртуалка ВМ в виртуалбоксе и тд.

    теперь битрикс
    смотри
    У битрикс вм есть админка, и сайты лучше создавтаь там.
    1. /home/bitrix - тут ( это в терминалогии фаерволов ВСЕ остальные) то есть все запросы на любые айпи домены с этм айпи -это мусорка и желательно не юзать ее а положить в папочке файлик сервер тот но пошло что-то не так.
    2. Создай сайт на битрикс вм указаав свой домен
    3. будет создна соответствующая папка /home/bitrix/ext_www/site.ru
    вот туда и ложи свой сайт, обарти внимниия что конфиги для бд там уже есть так что бд создавать тожене нужно.
    4. когда все заработало на 80 порту,. содаешь letsencrypt сертификаты.
    Желательно сайтв в студию поскольку сайт не является "персональной иформацией" а вот найти причину поможет.

    А ты полез куда-то писать свои конфгиги вобще не в ту степь полез
    Ответ написан
    Комментировать