Ответы пользователя по тегу Регулярные выражения
  • Как написать регулярное выражение?

    shambler81
    @shambler81 Куратор тега htaccess
    ?katalog_url - гет запрос и не является частью урла.
    Ваз вопрос должен звучать так.
    Как сделать редирект с гет запросом?

    Теперь подробней если с гет запроса на урл то вот
    RewriteCond %{QUERY_STRING} (^|&)katalog_url\=\$1($|&)
    RewriteRule ^.*$ /новыйурл$1 [L,R=301]

    А вот если нужно сделать НА урл с гет запросом то тут еще более топорно
    catalog.php?katalog_url=$1 - ваш вариант
    catalog.php\?katalog_url=$1 - рабочий вариант ;)
    Ответ написан
    3 комментария
  • Как сделать выборку, со строгим GREP по нескольким линиям?

    Оно ?
    https://habrahabr.ru/sandbox/102954/
    grep - умеет работать только со строкой! не ждите от него работы с массивами данных
    Ответ написан
    Комментировать
  • Объясните магию: как работает это правило RewriteRule?

    shambler81
    @shambler81 Куратор тега htaccess
    все просто это правило удаляет два слеша подряд, если их 2
    Если еж их больше то хтаксесс крутится по кругу пока не остановится и все урлы после прохождения останутя неизменными ( это не к правила а вообще к .htaccess относится). Так что тут все лочно работает, магии нет.
    И если вы понимаете что .htaccess гоняется кругами то магия исчезает.
    Ответ написан
    1 комментарий
  • Как правильно писать регулярные выражения в .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    у вас редирект с гет запросом, он не является частью урла.
    его делают по другому.
    Ответ написан
  • Как составить регулярку для URL подкатегории?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} ^categoria/(.*)$ 
    # если строка  начинается с categoria
    RewriteCond %{REQUEST_URI} !^categoria/podcategoria/(.*)$ 
    # защита от цикла ! - отрицание 
    RewriteRule ^(categoria/)(.*)$ /$1/podcategoria/$2 [R=301,L] 
    # добавит  у всего что есть категория подкатегорию


    если же тебе нужно управлять самими гет запросами то опять же тебе нужна двухуровневая конструкция из кодн и рул. в таком случае будет все проще.
    просто скину пример дальше сам разберешся, если нужно хосте куда делаешь редирект использовать гет, то там экранируй вопросы, иначе не сработает. Если же нужно убрать то наоборот поставь в конце вопрс.

    # 301 --- http://shop.wildorchid.ru/Catalog/StyleCard.aspx?&sale=1&shop=7&categoryid=2046&style=26778 => http://shop.wildorchid.ru/catalog/nizhnee_bele/1010-defile/
    RewriteCond %{QUERY_STRING} (^|&)sale=1($|&)
    RewriteCond %{QUERY_STRING} (^|&)shop=7($|&)
    RewriteCond %{QUERY_STRING} (^|&)categoryid=2046($|&)
    RewriteCond %{QUERY_STRING} (^|&)style=26778($|&)
    RewriteRule ^Catalog/StyleCard\.aspx$ /catalog/nizhnee_bele/1010-defile/? [L,R=301]
    Ответ написан
    Комментировать
  • Как заменить запятую в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    действительно что у тебя сломается если ты поменяешь запятую на любой символ не так уж у тебя и критична эта проблемма, да и вариантов решения ее милион.
    Ответ написан
    Комментировать
  • Как правильно составить регулярное выражение в htaccess для фильтров каталога с ЧПУ?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} (групап1)(групап1)(групап1)(групап1)$
    RewriteRule ^(.*) http://site.ru/index.php\?module=....\?=%1\?=%2\?=%3   [NC,L,QSA]

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

    shambler81
    @shambler81 Куратор тега htaccess
    гыгы прикольно, для начала немного отдебажем твое художество.

    ############################################################################
    #### Cтандартный .htaccess для проектов студии Клондайк, версия 2.3     ####
    ############################################################################
    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 %{REQUEST_URI} ^(.*)/{2,}(.*)$
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteRule . %1/%2 [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.
    
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    Ответ написан
  • Grep: как исправить регулярку с просмотром вперед?

    shambler81
    @shambler81 Куратор тега Linux
    вам нужно чет вроде этого ?
    ifconfig | grep inet | grep -v inet6 | grep -v 127.0.0.1 | cut -d: -f2 | awk '{printf $1"\n"}'
    Ответ написан
    Комментировать