• Как настроить редирект с url на другую папку?

    condor-bird
    @condor-bird
    Обычный редирект:

    server {
        listen 80;
        server_name site.com;
    
        location /test {
            return 301 /other_site;
        }
    }


    Брать содержимое из другого каталога:

    server {
        listen 80;
        server_name site.com;
    
        location /test/ {
            root /var/www/other_site;
        }
    }
    Ответ написан
    Комментировать
  • Какое должно быть регулярное выражение для поиска URL?

    condor-bird
    @condor-bird
    Возможно примерно так:

    $text = "- 8bit/forum/category_70/
    - acer/blog/category_904/page_67/
    - kiwidition/photo/category_128/page_32/
    - edc/poll/category_51/";
    
    $text = preg_replace('/category_\d+/', '[url=$0]$0[/url]', $text);
    
    echo $text;
    Ответ написан
    1 комментарий
  • Почему VUE удаляет аттрибут selected у тега option?

    condor-bird
    @condor-bird
    По сути selected - это свойство vue элемента, которое браузер соответственно не будет отображать как атрибут.
    Чтобы отображать его именно как атрибут, нужно использовать .attr модификатор:

    :selected.attr="item.selected"

    Который принудительно установит привязку атрибута. Пока это единственный способ.
    Ответ написан
    Комментировать
  • Как правильно использовать функцию php?

    condor-bird
    @condor-bird
    Завертываем код в функцию
    function generateFaqSchema($postId) {
        $repeater = get_post_meta($postId, 'faqshema', true);
        $count = count($repeater);
    
        $jsonLd = [
            "@context" => "https://schema.org",
            "@type" => "FAQPage",
            "mainEntity" => []
        ];
    
        foreach ($repeater as $item) {
            $question = $item['question'];
            $answer = $item['answer'];
    
            $jsonLd['mainEntity'][] = [
                "@type" => "Question",
                "name" => $question,
                "acceptedAnswer" => [
                    "@type" => "Answer",
                    "text" => $answer
                ]
            ];
    
            $count--;
            if ($count > 0) {
                $jsonLd['mainEntity'][] = ',';
            }
        }
    
       return  '
        <script type="application/ld+json">
        ' . json_encode($jsonLd) . '
        </script>
        ';
    }


    Там где нужно, вызываем функцию и передаем любые параметры:

    echo generateFaqSchema(get_the_ID());
    Ответ написан
  • Почему mail() не отправляет сообщение на почту(openserver)?

    condor-bird
    @condor-bird
    При использовании mail() в OpenServer он отправляет письма только в текстовый лог ("Просмотр логов" - "Почта").
    Для реальной отправки настраивайте в настройках отправку через smtp сервер (гугл, майл, любой другой для тестов: https://ospanel.io/docs/#smtp).
    Ответ написан
    Комментировать
  • Как настроить сертификаты ssl для любого домена ссылающегося на ip?

    condor-bird
    @condor-bird
    LE (да и другие) не выдают серты для ip, только на домены/поддомены (wilcard). Поэтому:

    1) У каждого домена из списка в DNS должна быть указана A запись с ip на ваш сервер
    2) На сервере генерируются nginx конфиги для каждого домена
    3) Затем для каждого домена получаем LE сертификат (certbot или любой другой клиент + автообновление за 1-2 месяцев до окончания).
    Ответ написан
    Комментировать
  • Как сделать авторизацию через другую модель?

    condor-bird
    @condor-bird
    Для авторизации через несколько моделей:

    1) Найти /config/auth.php

    2) Добавить дополнительные значения в guards и providers. Например, отдельные аккаунты пользователей для личного кабинета, и администраторов для панели управления (дока).

    'guards' => [
            'admin' => [
                'driver' => 'session',
                'provider' => 'admin',
            ],
    
            'account' => [
                'driver' => 'session',
                'provider' => 'account',
            ],
        ],
    
      'providers' => [
            'admin' => [
                'driver' => 'eloquent',
                'model' => App\Models\Admin\User::class,
            ],
    
            'account' => [
                'driver' => 'eloquent',
                'model' => App\Models\Account\User::class,
            ],
        ],
    Ответ написан
    Комментировать
  • Как настроить nginx?

    condor-bird
    @condor-bird
    Смотрите часть, где указано proxy_pass в location/ блоке. Для try_files установлено значение $uri $uri/ /index.php?$query_string, если запрошенный адрес не удается открыть, он перенаправит на /index.php?$query_string.
    Но также если и на /index.php перенаправляет, отсюда и бесконечный цикл.
    Конфиг должен быть примерно такой:

    Nginx домена

    server {
        listen 80;
        server_name domain.com;
        return 301 https://$server_name$request_uri;
    }
    
    server {
        listen 443 ssl;
        server_name domain.com;
    
        location / {
            proxy_pass http://localhost:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }



    Nginx в докере

    server {
        listen 80;
        listen [::]:80;
        server_name _;
        root /var/www/domain.com/public;
    
        index index.php;
    
        charset utf-8;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    
        location = /favicon.ico { access_log off; log_not_found off; }
        location = /robots.txt  { access_log off; log_not_found off; }
    
        error_page 404 /index.php;
    
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
    }

    Ответ написан