Задать вопрос
  • Как сделать директории папок с разными языками страниц(ru/en) корневыми, чтобы не отображать их в uri?

    shambler81
    @shambler81 Куратор тега htaccess
    это делается не средствами .htaccess а средствами вашего движка
    в .htaccess может лишь только инициализироваться ЧПУ
    Ответ написан
    Комментировать
  • Какое сочетание сервер/клиент стабильнее для удалённого доступа с Windows на Линукс?

    shambler81
    @shambler81 Куратор тега Linux
    windows server стоит дешевле чем весь этот геморой.
    так же у винды есть поддержка h264 которого при всем желание нет у линукса ;(((
    Я как сторонник линукса констатирую неутишительный факт работа по настройке будет дороже чем винда на 1 комп.
    а вот работа в обратном направление вполне себе возможна
    remmina с леокостью справляется с 99% задач rdp но опять же с отсутствием h264
    Ответ написан
  • Конфиг апача или .htaccess, запрет на вход на сайт по прямой ссылке?

    shambler81
    @shambler81 Куратор тега htaccess
    SetEnvIfNoCase User-Agent .*google.* search_robot
    SetEnvIfNoCase User-Agent .*yahoo.* search_robot
    SetEnvIfNoCase User-Agent .*bot.* search_robot
    SetEnvIfNoCase User-Agent .*ask.* search_robot
    
    Order Deny,Allow
    Deny from All
    Allow from env=search_robot

    ищется в гугле за несколько секунд
    Ответ написан
  • Как разместить несколько сайтов на выделенном сервере?

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

    shambler81
    @shambler81 Куратор тега htaccess
    1. какая панель управления ?
    2. зачем вам для поддоменов создавтать подкаталоги в самом сайте, в чем по вашему логика? почему бы просто не создать их как отдельный сайт без этих финтелей ?
    3. симлинк поможет вам решить проблему https://linux-notes.org/sozdanie-ssy-lok-symlink-v...
    Ответ написан
  • Как удалять файлы по маске в Centos?

    shambler81
    @shambler81 Куратор тега Linux
    вы не ответили в какой части есть отрывок, будем думать что в конце
    find . -type f  -mtime +7  -regex ".+190" -exec rm -r "{}" \;

    -type f - только файлы
    -mtime +7 старше 7 дней
    -regex ".+190" - любые символы в конце файла 190
    -exe - выполнить над ним
    rm -r "{}" - удалить файл который в {} вывод массива из файнд, короче подставляется имя файла которое соответствует всем вышесказанным условиям.
    Ответ написан
    1 комментарий
  • 301 редирект со страниц на html на без html cо /?

    shambler81
    @shambler81 Куратор тега 1С-Битрикс
    я тут все подробно подписал, и привел к стандарту
    https://klondike-studio.ru/standards/standartnyy-h...
    Ответ написан
  • Как исправить отображения элементов сайта которые сломались из-за .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    1. а что у вас с цсс что отладчик говорит?
    2. нужны оба правила
    ############################################################################
    #### Убираем слеши в конце 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 нет точки (файл).
    RewriteCond %{REQUEST_URI} ^(.+)$
     # В URL есть хоть один символы
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    Ответ написан
    Комментировать
  • Почему не запускается nginx?

    expires 8d; - замени на expires max; - требования гугл пейдж спид.
    Теперь по пункткам
    1. journalctl -xe - вам уже написали
    2. nginx -t
    3. просо посмотри что в логе nginx
    Ответ написан
    Комментировать
  • Как задать редирект всех страниц с https на http index.php?

    Не забывай то сртификат на https все-равно должен существовать, посколкьу в противном случае редирект не сработает.
    ############################################################################
    #### Выбор основного зеркала (с www или без www)                        ####
    ############################################################################
        # 1. Удалить www
    #RewriteCond %{ENV:HTTPS} on
        #Если включен https
    #RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    #RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
        # Проверяем, содержит ли домен www в начале URL.
    #RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
        # Перенаправляем удаляем www
    
        # 2. Добавить www
    RewriteCond %{ENV:HTTPS} on
        #Если включен https
    RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
        # Если нет www в начале домена
    RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]
        #Подставляем www и https если он включен.
    
    ############################################################################
    #### Перенаправляем протокол http на https                              ####
    ############################################################################
    RewriteCond %{HTTPS} off
       # Проверяем наличие https в URL.
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
       # Перенаправляем протокол на http.
    Ответ написан
    Комментировать
  • Как определить корневую директорию на сервере?

    зайди в шаблон генерации конфигов apahce и nginx
    найди там document root и добавь ссылку
    перегенерируй шаблон
    Ответ написан
    Комментировать
  • Свой днс сервер обновляет записи быстрее?

    да быстрее
    Ответ написан
    Комментировать
  • Сделать редирект убрать "?start=0" в конце?

    shambler81
    @shambler81 Куратор тега htaccess
    1 и то и друго не является "нормальным" адресом поскольку у них есть гет запрос в любом случае, в следствие этого у вас имеется куча страниц с одинаковыми тайтлами и дескрипшенами, только с разным контентом внутри.
    В следствие этого у вас страниц "тостеры красные бош" будет 30 страниц, по сути каждая страничка пейдженации
    смотри канибализация запросов
    По этому я бы рекомендовал
    1. риал каноникал на страничу без гет параметров
    2. запретить гет запросы в робот txt
    3. Собрать нормальное ЧПУ
    4. пейдженацию убрать за аякс ( опционально)
    5. убрать устаревшую пейдженацию и поставить https://developers.google.com/search/docs/guides/l... он реально крут.

    теперь ответ на твой ответ ;)

    RewriteCond %{QUERY_STRING} (^|&)start\=0($|&)
    RewriteRule ^forum/topic1$ /forum/topic1? [L,R=301]
    Ответ написан
    Комментировать
  • Как написать правило .htaccess на запрос пароля?

    shambler81
    @shambler81 Куратор тега htaccess
    AuthUserFile /var/www/mysite/.htpasswd
    AuthName "Please Log In"
    AuthType Basic
    require valid-user
    Order allow,deny
    Allow from 192.168.1.1
    satisfy any
    Ответ написан
  • Как скрыть пароль mysql в bash-скрипте?

    Так будет лучше чем держать чем все базы в одном файле
    Пример дампа всех баз в отдельные файлы

    #!/bin/sh
    #скрипт бэкапа баз данных
    ###########################
    #Создаем папку для архивов.  -p не ругается когда папка уже есь test проверяет есть ли папка  для чистых логов
    test ! -d /var/backup/mysql/`date +%Y` && { mkdir -p /var/backup/mysql/`date +%Y` ; }
    test ! -d /var/backup/mysql/last && { mkdir -p /var/backup/mysql/last ; }
    
    #прячем от умных, и так не зайдут но всеже.
    chmod 600 /var/backup/mysql
    chmod 600 /var/backup/mysql/last
    
    # делаем сам дапм файлов sql, свежинькие файлы лежат всегда в ней, очень удобно не нужно заходить в архивы и искать там вчерашние базы, и логируется.
    for i in `mysql -uroot -p11111111 -e'show databases;' | grep -v information_schema | grep -v Database`; do mysqldump -uroot -pp11111111 $i > /var/backup/mysql/last/$i.sql;done >> /dev/null 2>> /var/log/sqlbackup.log
    # Архивируем дамп, ну и логируем разумеется
    cd /var/backup/mysql/
    tar -czvf /var/backup/mysql/`date +%Y`/sqldump-`date +%Y-%m-%u`.tar.gz ./last >> /dev/null > /var/log/sqlbackup.log
    #(echo "Subject: Бэкап mysql  klondike-server завершен"; cat /var/log/sqlbackup.log;) | /usr/sbin/sendmail  viktor@7877796.ru
    ##################  Конец скрипта
    
    #  БЭКАП /etca
    test ! -d /var/backup/etc/ && { mkdir -p /var/backup/etc/ ; }
    DATE=`date +%F`;
    BACKUPPATH="/var/backup/etc";
    find $BACKUPPATH/ -mtime +60 | xargs rm -f; #удаляет предыдущие бэкапы старше 60 дней.
    tar -czvf "$BACKUPPATH/etc.$DATE.tar.gz" /etc/ > /dev/null 2> /dev/null;


    ну или вариант .
    #!/bin/sh
    # Пример пути до сайта /var/www/site.ru/web/
    SITEDIR="/var/www"                                  # Папка до названия доменаов
    WEB="web"                                           # Папка после названия доменов (если есть)
    DBCONN="bitrix/php_interface/dbconn.php"            # Откуда читать настройки mysql
    FTPUSER="111111111"                                   # Логин FTP сервера
    FTPPASS="111111111111111"                        # Пароль FTP
    FTPHOST="u113948.your-storagebox.de"                # сервер FTP
    FTPDIR="/11111.ru/site/"                             # папка на FTP
    TMPDIR="/var/backup/site"                           # Где будут храниться временные файлы
    DATE=`date +"%Y-%m-%d"`                             # Формат даты в имени файла
    DATEYM=`date +%Y`/`date +%m`                        # Второй форматы даты
    LIST=${1:-`ls -L $SITEDIR | grep -E ".*\.\w{1,5}" | grep -v "restore.php" | grep -v "klondike.php"`} # Название сайта, тут выбор или аргумент или, регулярка  можно убрать только -L ;)
    
    test ! -d $TMPDIR/$DATEYM && mkdir -p $TMPDIR/$DATEYM # создаем  структ уру каталогов если их нет
    
    for ELEMENT in $LIST
        do
                    if [ ! -f /$SITEDIR/$ELEMENT/$WEB/$DBCONN ];
                            then
                                echo " Файл $SITEDIR/$ELEMENT/$WEB/$DBCONN не найден, сайт будет без БД!"
                            else
                                    DBLOGIN=$(grep "^\$DBLogin =" $SITEDIR/$ELEMENT/$WEB/$DBCONN | cut -f2 -d'"')
                                    DBPASS=$(grep "^\$DBPassword =" $SITEDIR/$ELEMENT/$WEB/$DBCONN | cut -f2 -d'"')
                                    DBNAME=$(grep "^\$DBName =" $SITEDIR/$ELEMENT/$WEB/$DBCONN | cut -f2 -d'"')
                                    mysqldump -u$DBLOGIN -p$DBPASS $DBNAME > $SITEDIR/$ELEMENT/$WEB/$DBNAME\-$DATE.sql && echo "Дамп БД $DBNAME будет сохранен в корне сайта"  ||  echo "Ошибка дампа базы данных " $DBNAME
                                    sed -i "/\/*40101 SET/d" $SITEDIR/$ELEMENT/$WEB/$DBNAME\-$DATE.sql
                                    sed -i "/\/*40103 SET/d" $SITEDIR/$ELEMENT/$WEB/$DBNAME\-$DATE.sql
                                    sed -i "/\!40111 SET/d" $SITEDIR/$ELEMENT/$WEB/$DBNAME\-$DATE.sql
                                    sed -i "/\!40014 SET/d" $SITEDIR/$ELEMENT/$WEB/$DBNAME\-$DATE.sql
                                    sed -i "/\!40000 ALTER/d" $SITEDIR/$ELEMENT/$WEB/$DBNAME\-$DATE.sql
                                    #echo "SET NAMES 'utf8' COLLATE 'utf8_unicode_ci';" > $SITEDIR/$ELEMENT/$WEB/bitrix/backup/$DBNAME\-$DATE\_after_connect.sql
    
                    fi
    
        echo "Архивируем сайт $ELEMENT"
            tar -cvpzf $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz --directory $SITEDIR/$ELEMENT/$WEB --ignore-failed-read --exclude='./bitrix/tmp' --exclude='./bitrix/updates' --exclude='./bitrix/backup/*\.gz*' --exclude='./bitrix/backup/*\.tar*' --exclude='./bitrix/cache' --exclude='./bitrix/managed_cache' --exclude='./bitrix/stack_cache' --exclude='./upload/resize_cache' --exclude='./stats' . >> /dev/nool 2> /var/log/backup_error.log
            rm -f $SITEDIR/$ELEMENT/$WEB/$DBNAME\-$DATE.sql # поскльку ложим на реальный сайт, ибо нормально добавить в архив не получитяс.
            #rm -f $SITEDIR/$ELEMENT/$WEB/bitrix/backup/$DBNAME\-$DATE\_after_connect.sql
    
            echo "Сохраняем $ELEMENT на FTP"
            wput  --basename=$TMPDIR --limit-rate=60000K --timestamping  --tries=2 $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz ftp://$FTPUSER:$FTPPASS@$FTPHOST$FTPDIR
            rm -f $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz
    
    echo -en "\n\033[37;1;41m Ссылочка:\033[0m \e[1;4;36mwget ftp://u113948-sub1:11111111111@$FTPHOST/$DATEYM/$ELEMENT-$DATE.tar.gz\e[0m\n\n" #ks05
      done
    rm -r $TMPDIR

    Данный вариант уже поддерживает аргумент в виде сайта котормоу нужно сделать дампbxbump site.ru, так же он демпит сам сайт со спецификой движка ( тут битрикс) берет данные прям с конфига, заливает на внешний фтп
    Если аргумента нет то будет дамп всех сайтов и всех бд к ним
    ну и дает ссылку в режиме RO уже для чтения с этого сервера.
    p.s требует доустановку wput поскольку можно ограничить скорость аплоада
    Ответ написан
    1 комментарий
  • Как убрать папки из url?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} ^/dir1/(.*)$ 
    # если строка начинается с /dir1/ 
    RewriteRule ^(.*)$ /dir1%1 [R=301,L] 
    #Перенаправить все урлы с начинающиеся с dir1 на dir2 с сохранением дальнейшей структуры URL

    Подробней писал тут
    https://klondike-studio.ru/blog/snipet-for-htaccess/

    Если же вам нужно ограничить количество и директорий
    ^/dir1/(.*)[^/]\.(.*)[^/]\.(.*)[^/]$

    (.*)[^/] -любое но не слеш
    Ответ написан
  • Имеет ли хостинг доступ к моему VPS?

    физически у админа есть доступ к твоим единичкам и ноликам поскольку у него есть доступ до физического устройства на котором они хранятся так что на первую часть вопроса ответ да, как бы ты не крутил.
    НО есть и отдельные НО
    в частности хостер может сам захотеть отстраниться от твоих единичек и ноликов, в таком случае
    Определенная група лиц имеющих доступ до системы "например разработчики АПи методов работы с твоей ВМ"
    работают изолированно и не могут иметь физического доступа к продакшен серверу, а могут рулить и крутить с впс на тестовой площадке.
    В контуре продакшен, может отсутствовать сотрудник с правами достаточными для входа на твою машину, а данные могут быть зашифрованы.
    Пароли харнятся в md5 - который вы сами понимаете не востановим.
    Вот и получается что при желание двухконтурная работа продакшен и дев группы сотрудников могут привести к следующему
    первая группа не имеет реальных данных
    вторая не имеет прав достаточных для управления вашими данными
    остается только тот человек который заливает первое на второе, теоретически он мог бы внести правки в код и задеплоить, оставив себе бэкдор. но это тоже легко убирается.
    В общем ответ такой
    ДА имеет, но если нужно будет самому хостеру он сделает так что его сотрудники физически не смогут это сделать.
    Ответ написан
    Комментировать
  • Механика работы proxy_connect_timeout?

    60 мало, тем более 3
    В прокси конект таймаут войдет и ответ сервера с той стороны, а следовательно и запрос в msyql
    Если ответа не будет за это время то вы увидите ошибку, и nginx дропнит это обращение в 500
    если же тянуть кота за ....
    то 1 вариант и второй может сильно загрузить один из бэк в следствие чего 3 явно мало, а в последнем случае равномерно нагрузить бэки для таймаута намного тяжелее и есле сервер не ответил за 3, то перейти на следующий в следствие этого при переключение клиент не заметит просадки, поскольк3 это не 60
    НО как я и говорил вы должны быть 100% уверены что за 60 и тем более 3 может выполнится тяжелый хит.
    В вашем случае есть вариант не выполнения тяжелого запроса за 3 секунды и он как дурак побежит по серверам в надежде получить хоть что-то, в результате даст 3 тяжелых хита на сервера и сдохнет.
    Ответ написан
    Комментировать
  • Как настроить правильно отправку писем с внешнего сервера?

    только вчера подключал ;) msmtpd

    host smtp-pulse.com
    account mxxxxxx.ru
    logfile /home/bitrix/mxxxxxx.ru.log
    port 587
    from office@mxxxxxx.ru
    
    так же постфикс тоже умеет это делать
    keepbcc on
    auth login
    user office@xxxxxxx.ru
    password LSsSdCLfasdf
    
    tls off
    tls_certcheck off


    Вот в этой вм по умолчанию почта ходит через него, да и админка консольная есть, плюс оптимизация скорости сайта есть.
    https://www.1c-bitrix.ru/products/vmbitrix/
    скрипт sh внизу
    Ответ написан
    Комментировать