• Почему modx после смены тарифа на хостинге упал в 504?

    an-tar
    @an-tar Куратор тега MODX
    Full stack web developer
    покопался в конфигах MODX

    А конфиги NGINX проверили? Кеш MODX чистили? больше нигде прежний IP не "зашит"? Какое-нибудь неочевидное место типа index.php в корне, настройки контекстов и пр, где могли осесть прежние настройки.
    Ну и смотрите логи - веб-сервера прежде всего, из-за чего ошибка.
    Ответ написан
    6 комментариев
  • Как настроить vpn на роутере для определённых доменных имён?

    @kest70
    Человеку свойственно ошибаться
    Покупаешь роутер с OpenWrt, там есть прошивки для обхода блокировок. Я беру российский роутерыч примерно за 5к. можешь погуглить, может и тебе подойдёт для твоих целей.
    Ответ написан
    Комментировать
  • Как настроить vpn на роутере для определённых доменных имён?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Keenetic + Entware + Квас
    Ответ написан
    Комментировать
  • Как настроить vpn на роутере для определённых доменных имён?

    @dronmaxman
    VoIP Administrator
    Ответ написан
    Комментировать
  • Как настроить vpn на роутере для определённых доменных имён?

    @AlexVWill
    Либо роутер с поддержкой OpenWRT и сделать как написано выше, либо любой Mikrotik который влезет в бюджет и настроить его штатно через маркировку пакетов по любой инструкции: вот например первое что нагуглил https://pikabu.ru/story/nastroyka_vpn_na_mikrotik_...
    Ответ написан
    2 комментария
  • Как настроить vpn на роутере для определённых доменных имён?

    На Openwrt пакет называется PBR, policy based routing. Соответственно нужен Openwrt в любом виде: роутер, виртуалка, одноплатник
    Ответ написан
    Комментировать
  • Как настроить vpn на роутере для определённых доменных имён?

    @Drno
    Если роутер то кинетик, и можете там поднять проект Антизапрет. как раз то что нужно по идее...
    Либо одноплатник + sing-box туда, и так же прописать раздельную маршрутизацию
    Ответ написан
    Комментировать
  • Обновляю посты по расписанию. Через wp_insert_post, но не добавляются таксономии в tax_input, почему?

    @techkiller
    Привет!
    Твоя проблема с добавлением таксономий через `tax_input` при использовании функции `wp_insert_post` в запланированных задачах может быть связана с различиями в правах пользователя, которые действуют при выполнении функций по расписанию и при активации по кнопке.
    По умолчанию, функция `wp_insert_post` не устанавливает таксономии, если она выполняется от пользователя, у которого нет прав на редактирование этих таксономий. Когда ты выполняешь добавление поста по кнопке, скорее всего, ты залогинен как администратор или другой пользователь с достаточными правами. Однако, когда операция выполняется в фоновом режиме по расписанию, она может запускаться от имени пользователя, у которого нет необходимых прав.
    Чтобы решить эту проблему, можно попробовать следующие шаги:
    1. Использование хуков: Перед вызовом `wp_insert_post`, применяй хук `wp_set_current_user` для временной смены текущего пользователя на администратора:

    php
       wp_set_current_user(1); // 1 - это обычно ID администратора
       $post_ID = wp_insert_post($post_data);

    Это позволит выполнять добавление постов с таксономиями с правами администратора, независимо от контекста вызова функции.
    2. Добавление таксономий после создания поста: Иногда более надёжным решением может быть отдельное добавление таксономий после создания поста с помощью функции `wp_set_object_terms`:

    php
       wp_set_object_terms($post_ID, $departmentsTags, 'department');
       wp_set_object_terms($post_ID, $officesTags, 'location');

    Этот метод также гарантирует, что таксономии будут добавлены независимо от прав текущего пользователя.
    3. Проверка прав: Удостоверься, что задачи по расписанию запускаются с правами пользователя, который имеет возможность редактировать посты и таксономии.

    Попробуй эти решения, и, надеюсь, одно из них поможет тебе решить проблему с добавлением таксономий в отложенных задачах. Удачи!
    Ответ написан
    1 комментарий
  • Как устранить цепочку редиректов (http на https)?

    @dodo512
    RewriteRule ^(.*[^/])$ $1/ [L,R=301]

    Тут нужно указать полный адрес с https и доменом.
    RewriteRule ^(.*[^/])$ https://site.ru/$1/ [L,R=301]
    Ответ написан
    1 комментарий
  • Как сделать редирект на Сontact form7 при успешной отправки сообщения если отключен JS?

    Ivseti
    @Ivseti Автор вопроса
    Фронтенд HTML, CSS и немного JS с PHP
    Вроде получилось. Посмотрел документацию на WP Kama. Написал простенькое условие, сработало.

    add_action('wpcf7_mail_sent', 'wpcf7mailsent_redirect');
    function wpcf7mailsent_redirect() {
        if ( 'wpcf7_mail_sent' == true ) {
    		$new_url = 'https://ya.ru';
    		header('Location: '.$new_url);
    		exit();
        }
    }
    Ответ написан
    Комментировать
  • Как из админки запустить php-скрипт по клику?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Я бы использовал плагин, с личной админкой и кнопкой на панели меню:
    /*
    Plugin Name: Супер плагин
    Description: Невероятный плагин, взламывает пентагон по клику!
    Version: 0.1
    Author: Михаил Р.
    */
    
    function super_plugin_menu() {
        add_menu_page('Супер плагин', 'Супер плагин', 'manage_options', 'custom-php-executor', 'super_plugin');
    }
    
    function super_plugin() {
        if(isset($_POST['custom_php_code'])) {
            $code = stripslashes($_POST['custom_php_code']);
            update_option('super_plugin_custom_code', $code);
        } else {
            $code = get_option('super_plugin_custom_code', '');
        }
    
        ?>
        <div class="wrap">
            <h2>Супер плагин</h2>
            <form method="post">
                <textarea
                    name="custom_php_code"
                    style="width:100%;height:200px;"
                ><?php echo htmlspecialchars($code); ?></textarea>
                <input type="submit" value="Выполнить, как следует!" class="button button-primary">
            </form>
        </div>
    
        <?php
        if(!empty($code)) {
            eval($code);
        }
    }
    
    add_action('admin_menu', 'super_plugin_menu');

    КартинкО

    65ca1aaf1a6e2384036131.png
    65ca1ab6114ec549148365.png
    65ca1abcca92b540993230.png
    65ca1ac2ceaff186880778.png
    Ответ написан
    2 комментария
  • Centos 7: почему после обновления php c 7.4 на 8.0 не стартует httpd?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Apache по умолчанию не работает с php-fpm, ему нужен mod-php, который вам и нужно установить
    Ответ написан
    1 комментарий
  • BITRIX: региональность intec. Почему запоминается регион основного домена?

    смотрите что записывается в куки и к какому домену эта кука привязывается
    Ответ написан
    1 комментарий
  • Как настроить редирект одновременно и с index и с www?

    @dodo512
    RewriteCond %{REQUEST_URI} ^(.*/)index\.(php|html)
    RewriteRule ^  https://site.name%1 [R=301,L]
    
    RewriteCond %{HTTP_HOST}   ^www\. [NC]
    RewriteRule ^(.*)$ https://site.name/$1 [R=301,L]
    Ответ написан
    1 комментарий
  • Почему у php недостаточно прав на перезапись файлов?

    Stalker_RED
    @Stalker_RED
    Запускается через php скрипт.
    как именно запускается? Через SSH-консоль, через вебсервер, может через крон? Это все может быть под разными пользователями.

    Для начала разобраться какие пользователи вообще замешаны. Для этого на боевом сервере делаешь эксперимент:
    создаешь файлик от имени обычного скрипта, от имени вашего опртимизатора, и от имени фтп-заливки.
    Вот прям создай папочку "test" и залей в нее hello_ftp.txt через ftp
    Затем из php скрипта сделай file_put_contents('test/hello_php.txt', 'foo');
    И в оптимизатор тоже добавь похожее file_put_contents('test/hello_optimizator.txt', 'foo');

    Затем зайди через SSH в папку test, напиши ls -l
    Если SSH нет, то можно опять-же сделать скриптом
    $files = glob('/path/to/test/*');
    foreach ($files as $fn) {
        echo $fn . ' | ' . fileowner($fn) . '<br>' . PHP_EOL;
    }

    Скорее всего найдутся отличия. Останется придумать как изменить способ запуска, чтобы проблема не поворялась в будущем, ну и поправить владельца у уже существующих файлов (chown).
    Ответ написан
    3 комментария
  • Редирект при множественном "///"?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{THE_REQUEST} //
    RewriteRule .* /$0 [R=301,L]

    - единственный нормально работающий способ.
    А вот тебе в добавок дополнительные, тут доп исключения.

    ############################################################################
    #### Cтандартный .htaccess для проектов студии Клондайк, версия 2.4     ####
    ############################################################################
    RewriteEngine On
       #  Директива включает редиректы.
    RewriteBase / 
       # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
    Options +FollowSymLinks
       # Разрешает переход по символическим ссылкам.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    RewriteCond %{HTTPS} on
       # Проверяем наличие https в URL.
    RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Выбор основного зеркала (или с www или без www)                    ####
    ############################################################################
       # 1. Редирект с www на без www. (раскоментировать директивы пункта 1)
    #RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
       # Проверяем, содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
       # Перенаправляем URL на домен без www.
    ####
       # 2. Редирект без www на www. (раскоментировать директивы пункта 2)
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
       # Проверяем, не содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
       # Перенаправляем URL на домен c www.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{THE_REQUEST} //
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteRule .* /$0 [R=301,L]
       # Исключаем все лишние слеши.
    
    ############################################################################
    #### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
    ############################################################################
    RewriteCond %{REQUEST_URI} \..+$  
       # Если файл содержит точку.
    RewriteCond %{REQUEST_FILENAME} !-d   
       # И это не директория.
    RewriteCond %{REQUEST_FILENAME} -f
       # Является файлом.
    RewriteCond %{REQUEST_URI} ^(.+)/$      
       # И в конце URL есть слеш.
    RewriteRule ^(.+)/$ /$1 [R=301,L]     
       # Исключить слеш.
    
    ############################################################################
    #### Добавляем слеш(/), если его нет, и это не файл.                    ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
       # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
       # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
       # В URL нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    
    ############################################################################
    #### Компрессия статического контента для гугл  спид тест               ####
    ############################################################################
    <IfModule mod_deflate.c>
      # Compress HTML, CSS, JavaScript, Text, XML and fonts
      AddOutputFilterByType DEFLATE application/rss+xml
      AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
      AddOutputFilterByType DEFLATE application/x-font
      AddOutputFilterByType DEFLATE application/x-font-opentype
      AddOutputFilterByType DEFLATE application/x-font-otf
      AddOutputFilterByType DEFLATE application/x-font-truetype
      AddOutputFilterByType DEFLATE application/x-font-ttf
      AddOutputFilterByType DEFLATE application/x-javascript
      AddOutputFilterByType DEFLATE application/xhtml+xml
      AddOutputFilterByType DEFLATE application/xml
      AddOutputFilterByType DEFLATE font/opentype
      AddOutputFilterByType DEFLATE font/otf
      AddOutputFilterByType DEFLATE font/ttf
      AddOutputFilterByType DEFLATE image/svg+xml
      AddOutputFilterByType DEFLATE image/x-icon
      AddOutputFilterByType DEFLATE text/css
      AddOutputFilterByType DEFLATE text/html
      AddOutputFilterByType DEFLATE text/javascript
      AddOutputFilterByType DEFLATE text/plain
      AddOutputFilterByType DEFLATE text/xml
      AddOutputFilterByType DEFLATE image/svg+xml
    </IfModule>
    <IfModule mod_expires.c>
      ExpiresActive on
      ExpiresByType image/jpeg "access plus 3 day"
      ExpiresByType image/svg "access plus 3 day"
      ExpiresByType image/gif "access plus 3 day"
      ExpiresByType image/png "access plus 3 day"
      ExpiresByType text/javascript "access plus 3 day"
      ExpiresByType text/css "access plus 3 day"
      ExpiresByType application/javascript "access plus 3 day"
    </IfModule>
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    Ответ написан
    1 комментарий
  • JS: ловлю форму с помощью mutationObserve, слушаю событие отправки формы, но событие не наступает, почему?

    szQocks
    @szQocks
    Я не знаю как ты изучаешь технологию, я хоть и не пишу на валидном, но я за 10 минут прочитал об
    MutationObserver

    и понял что это просто наблюдатель за дом нодами и всё - он не смотрит за событиями дом нод, он не должен знать о том вызвался ли твой обработчик на форме или нет.

    Если же сама дом нода изменилась - например если ты повесишь дата атрибут на форму - твой коллбэк в MutationObserver - будет вызван, так как дом нода изменилась, так же можно и за нодами потомков следить и т.д.

    Вот я написал пример - Пример
    Пусть сколько угодно будет раз вызвано событие submit - так как форма не изменилась - то и вызван коллбэк в MutationObserver не будет. Но если при submit - на форму повесить атрибут id рандомный - то коллбэк будет вызван. Вообще бы не советовал пользоваться этой штукой, от неё мне кажется проблем больше, где-то не углядишь и она будет вызывать в те моменты когда ты их и не ожидаешь.
    Ответ написан
    1 комментарий
  • Регулярные выражения: как найти слово с начинающееся с цифры?

    Stalker_RED
    @Stalker_RED
    Во-первых, оно работает https://regex101.com/r/7oy7zo/1
    Во вторых, возможно заканчивать пробелом - не самая хорошая идея, т.к. вы захватываете лишние пробелы и знаки припинания. Можно конечно потом применить trim(), но почему-бы сразу в регулярке прописать ограничения?
    (\d.*?)[,\s] вот так уже не захватываем пробел и запятую.
    Ответ написан
    2 комментария
  • Регулярные выражения: как найти слово с начинающееся с цифры?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Тут разные подходы могут быть.

    Можно перечислить все символы в артикле:
    \b(\d[\d\w.-]*)
    (числа, латинские буквы, дефис, точка)
    Если нужны русские, их нужно отдельно вписать по типу А-Яа-я.

    Также можно использовать выражение "всё кроме". Например, "кроме пробела":
    \b(\d[^ ]*)

    В общем виде будет как-то так:
    preg_match('/\b(\d[^ ]*)/', $product->name, $matches);
    Ответ написан
    1 комментарий
  • Image magic: как оптимизировать все изображения во всех подпапках разом?

    smilingcheater
    @smilingcheater
    Через команду find с передачей найденного файла как параметра в mogrify. Несколько лет назад сам таким занимался, сохранился вот такой сниппет, но уже не помню как точно он работает.
    find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" -iname "*.JPG" \) -exec jpegoptim -f -m80 -T10 --strip-all {} \; && 
    find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" -iname "*.JPG" \) -exec mogrify -verbose -format jpg -layers Dispose -resize 2048\>x2048\> -quality 80% {} +
    Ответ написан
    Комментировать