Ответы пользователя по тегу htaccess
  • Не происходит редирект 404 .htaccess при использовании ЧПУ. Почему?

    Isolution666
    @Isolution666
    Full-Stack Developer
    Нужно убрать RewriteBase /
    Вы делаете редирект на главную страницу, чтобы вы не ввели, если такой страницы нет, будет переходить на главную. По умолчанию index.php
    Но это можно исправить ))
    DirectoryIndex main.py
    Вот целый блог на эту тему
    Ответ написан
    Комментировать
  • Как вывести .jpg .png и т.д из папки отличной @web?

    Isolution666
    @Isolution666
    Full-Stack Developer
    Здравствуйте.
    ---
    То о чём вы говорите, называется пространством имён, настраивается в папке config
    Можете использовать adminLTE - там есть настройки, позволяющие выводить директорию, скрывая
    /frontend/web/ и бэкенд.
    https://github.com/almasaeed2010/AdminLTE
    Допустим, если вы в папке web создадите к примеру папку image
    Картинка будет в этом случае выводится так:
    /image/1.jpg
    Ответ написан
    Комментировать
  • Почему не работает редирект с WWW?

    Isolution666
    @Isolution666
    Full-Stack Developer
    ))) я вообще не вижу в этом проблемы, создал в корне сайта файл .htaccess
    - раз
    Открыл файл, написал:

    AddDefaultCharset UTF-8
    
    RewriteEngine On
    RewriteCond %{HTTP:HTTPS} !=on [NC]
    RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

    - два

    И сохранил, никаких редиректов и лишних файлов, я на этих SSL-сертификатах собаку съел )))
    У меня всё работает отлично !
    P.S. примечание, как видно в примере выше, я не писал www , он там и не нужен, при наборе ссылки с www возвращает
    https://example.com
    Ответ написан
  • Как сделать редирект без смены url?

    Isolution666
    @Isolution666
    Full-Stack Developer
    Зная вашу версию, объясняю, есть в urlManager роли, которые надо указать. Если в ролях используются get запросы, тогда надо учитывать, число это или строка, если число, ставим значение 'd' (digital) если это строка,указываем значение 'w' (word), как в примере:

    'urlManager'=> [
                'enablePrettyUrl' => true,
                'showScriptName' => false,            
                    'rules'=> [
    // возвратит название домена, без слэша ( 1 )
                        '' => 'site/index',
    // возвратит экшен без названия папки контроллера ( 2 )
                        '<action:(login|logout|new|index|contact)>' => 'site/<action>',
                        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
                        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                        '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
    // возвратит get запрос с ссылкой, у которой переменная $link отобразит строку ( 3 )
                        'site/news/<link:\w+>' => 'site/news',
                    ],            
            ],

    путь к данным параметрам /frontend/config/main.php

    в контроллере /frontend/controllers/SiteController.php
    public function actionNews($link = '') {
                // делаем get запрос
                $get = News::find()->where(['link' => $link])->one();
                return $this->render('news', ['link' => $link, 'get' => $get,]); 
    	}

    естественно не забыть указать узы для класса, и создать во вьюхе файл news.php

    В самом файле все get-переменные будут выглядеть примерно так:
    <?=$get->header;?>

    понятно, что $get - это переменная делающая запрос в БД, а header - переменная и название столбца в таблице БД, из которой передаётся значение по переменной $link а не $id !!!
    Получится что-то типа:

    // это для примера, писать не надо
    <?php 
    $link = 'first';
    ?>
    http://mysite.host/frontend/web/site/news/first


    Если хотите убрать /frontend/web/ , придётся поменять session и request, это может привести к потере директорий для многих стилей и скриптов, и перекроет кислород бекэнд разделу, но можно сделать модуль, создать свой лэяут и отделить во фронтэнде этот раздел, чтобы он был как бы бэкэндом, в тоже время папки с админкой будут во фронтэнде, операция сложная и требует знаний архетектуры Yii2, знания я черпаю из документации, хоть она и на английском, но там есть знакомые фрагменты кода Yii2 и даже описаны примеры и как и что применить.
    В конечном итоге я добился вида ссылок:

    mysite.host/site/news/first - при get-запросе, случай ( 3 )
    и
    mysite.host/news - при отображении страницы из экшена. Случай ( 2 )
    --
    Смотреть выше.
    Успехов вам ))
    Ответ написан
    1 комментарий