Конструкция (?!\[/url\]).)+ захватывает по одному символу, пока не встретит .
https://regex101.com/r/uG2yC2/1
$regex = '~\[url\](((?:(?!\[/url\]).){25})(?:(?!\[/url\]).){11,}(?<=(.{10})))\[/url\]~';$text = preg_replace($regex, '<a href="\1">\2...\3</a>', $text);
http://php.net/manual/ru/regexp.reference.back-references.php
$template = preg_replace("#\\[([a-z]+)\\](.*?)\\[\\/\\1\\]#ies", "", $template);
RewriteRule ^/logistic$ /dostavka-i-sborka-mebeli/$ [R=301,L]RewriteRule ^/actions$ /action/$ [R=301,L]
Символ ^ в шаблоне обозначает позицию в начале текста. Строка, с которой работает RewriteRule не начинается с "/". Это подробно описано в статье http://habrahabr.ru/company/sprinthost/blog/129560/
RewriteRule Pattern Substitution [Flags]
В Substitution лишний символ $ приводит к целой серии редиректов.
Например:
RewriteRule ^composition/1(.*)$ /gostinye/$ [R=301,L]
/gostinye/$ => /gostinye/$/ => /404 => /404/
http://www.bertal.ru/index.php?a2017976/www.astron-mebel.ru/composition/1/4#h
Если планировалось делать редирект для адресов /catalog/composition/1, то достаточно убрать символ ^ из шаблона.
RewriteRule /composition/1 /gostinye/ [R=301,L]
RewriteCond %{THE_REQUEST} " /sanela/pissuary/ustrojstvo-davtomaticheskogo-smyva-pissuara/item/slp02k\?category_id=44 " RewriteRule ^ /santehnika/aksessyary-dlia-vannyh-i-tyaleta/feny/item/slp02k-2?category_id=1480 [L,R=301]
Вставить после RewriteEngine On
Речь про то, что на сайте bentglass.ru правила
RewriteCond %{HTTP_HOST} ^(www\.)?bentglass\.ru
RewriteRule ^(.*)$ http://www.astron-mebel.ru/$1 [R=301,L]
перенести в самое начало.
Правила применяются в том порядке, в котором они перечислены. Перенесите правила для редиректа на самый верх сразу после RewriteEngine On
http://php.net/manual/ru/function.preg-replace.php
'замена' должна быть вторым параметром
Под page.php подразумевался скрипт контактной формы.
Если данные передаются методом POST на адрес page.php, то правило RewriteRule ^(.*[^/])$ /$1/ [R=301,L] выполнит редирект на адрес /page/ и все данные формы потеряются. Проверьте что форма отправляется сразу на адрес /page/.
Если нет возможности исправить скрипт, то можно добавить исключение для POST запросов
RewriteCond %{REQUEST_METHOD} !=POST [NC] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^(.*[^/])$ /$1/ [R=301,L]
Вместо
RewriteCond %{DOCUMENT_ROOT}/$1.html -f RewriteRule ^(.+)/$ $1.html [L]
Так
RewriteCond $1.php ^page.php$ [or] RewriteCond $1.html ^.+ RewriteCond %{DOCUMENT_ROOT}/%0 -f RewriteRule ^(.+)/$ %0 [L]
Или так
RewriteCond %{DOCUMENT_ROOT}/$1.html -f RewriteRule ^(.+)/$ $1.html [L] RewriteCond %{DOCUMENT_ROOT}/$1.php -f RewriteRule ^(.+)/$ $1.php [L]
$label = "\*[a-z]+\*";