RewriteRule ^component/jdownloads/viewdownload/ http://site.com/ [R=301,L]
Ставить в самом начале файла сразу после RewriteEngine On
Так это же фича 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}