Так это же фича Perl, а в редакторы обычно встраивают библиотеку PCRE и там такой фичи нету.
После шаблона в RewriteRule ожидается адрес, так что апач будет искать файл /[R=404,L] и флаг [L] останавливающий обработку апач здесь не увидит и если после этого правила есть RewriteRule .* index.php [L] то 404 ошибки не будет. В таких случаях на месте адреса достаточно дефиса.
RewriteEngine on RewriteCond %{QUERY_STRING} ^up= RewriteRule ^$ - [R=404,L]
В Notepad++ под эту задачу нужный макрос стандартными средствами записать не удалось, так что придется вручную добавлять в файле shortcuts.xml между тегами <Macros> и </Macros>. Добавлять при закрытом Notepad++.
<Macro name="lowercase" Ctrl="no" Alt="no" Shift="no" Key="0"> <Action type="2" message="0" wParam="43046" lParam="0" sParam="" /> <Action type="2" message="0" wParam="42017" lParam="0" sParam="" /></Macro>
Очистить результаты поиска.
Вызвать меню поиска в файлах.
Указать нужную папку и фильтр.
Шаблон поиска используем тот же href="\K[^"]+.
Смотрим на количество найденных результатов и указываем это число в меню многократного запуска макроса.
После сохранить все.
Или проверять переменную %{THE_REQUEST} "GET /?l=blablabla HTTP/1.1"
RewriteCond %{THE_REQUEST} \ /\?l=([^&\ ]+) RewriteRule ^ /papka/%1.html? [R=301,L]
Такое вполне решается макросами.
Меню Макросы -> Начало записи. Потом вызываем меню поиска и для поиска атрибутов href в шаблон поиска вбиваем такую регулярку
href="\K[^"]+
Жмём искать далее и в тексте будет выделен найденый текст. Кликаем правой кнопкой по нему и в контекстном меню выбираем строчные. После жмём меню Макросы -> Остановка записи и многократный запуск.
Любопытно, а если с помощью mod_headers провернуть такую штуку
RequestHeader set Host site.ru
Правила mod_rewrite будут по-прежнему видеть какой домен запрашивал юзер и делать редирект если нужно, а вот php скрипт всегда будет получать в заголовках домен установленный директивой RequestHeader.
Так это правило и так работает для всех категорий.
Если имелось в виду не один товар из всех категорий, а все товары из всех категорий, то нужен шаблон ^catalog/[^/]+/[^/]+/$.
Адреса начинающиеся на /catalog/element/ так же попадают под этот шаблон и для них нужно исключение иначе будет бесконечная переадресация.
RewriteCond %{REQUEST_URI} !^/catalog/element/ RewriteRule ^(catalog)/[^/]+/([^/]+)/$ http://pozvonimarket.ru/$1/element/$2/? [R=301,L]
RewriteRule ^(catalog)/(?!element/)[^/]+/([^/]+)/$ http://pozvonimarket.ru/$1/element/$2/? [R=301,L]
Исключение для /catalog/element/ можно сделать дополнительным RewriteCond
RewriteCond %{REQUEST_URI} !^/catalog/element/ RewriteRule ^(catalog)/[^/]+/(shpingalet_dvernoy_palladium_09)/$ http://pozvonimarket.ru/$1/element/$2/? [R=301,L]
Или так
RewriteRule ^(catalog)/(?!element/)[^/]+/(shpingalet_dvernoy_palladium_09)/$ http://pozvonimarket.ru/$1/element/$2/? [R=301,L]
Ставить в самый верх сразу после RewriteEngine On
Если я правильно понял, то ищем цифру 7 или 8, за которой следуют десять цифр, которые могут быть разделены тире или пробелом.
Это описывается регулярным выражением [78](?:[- ]?\d){10}
word <a href="http://site1.ru">site1.ru</a> word http://site3.ru word word <a href="http://site2.ru">site2.ru</a>
Это последствия применения <\/a>.* которая захватит максимально любых символов до конца строки.
Можно поправить выкинув из шаблона все лишнее оставив только (\s)(http:\/\/[\w\.\-\_%]*)
Но не сработает если ссылка в начале текста или обернута в другой тег <span>http://site3.ru</span>.
Решить можно так:
$html = preg_replace('~ \G ( (?: [^h<]+ | <a.*?</a> | (?!(?2)). )*+ ) (http://[-._%/\w]*)~ix', '\1<a href="\2">\2</a>', $html );