Под page.php подразумевался скрипт контактной формы.
Если данные передаются методом POST на адрес page.php, то правило RewriteRule ^(.*[^/])$ /$1/ [R=301,L] выполнит редирект на адрес /page/ и все данные формы потеряются. Проверьте что форма отправляется сразу на адрес /page/.
Если нет возможности исправить скрипт, то можно добавить исключение для POST запросов
Конструкция (?!\[/url\]).)+ захватывает по одному символу, пока не встретит .
https://regex101.com/r/uG2yC2/1
http://php.net/manual/ru/regexp.reference.back-references.php
Символ ^ в шаблоне обозначает позицию в начале текста. Строка, с которой работает RewriteRule не начинается с "/". Это подробно описано в статье http://habrahabr.ru/company/sprinthost/blog/129560/
RewriteRule Pattern Substitution [Flags]
В Substitution лишний символ $ приводит к целой серии редиректов.
Например:
/gostinye/$ => /gostinye/$/ => /404 => /404/
http://www.bertal.ru/index.php?a2017976/www.astron-mebel.ru/composition/1/4#h
Если планировалось делать редирект для адресов /catalog/composition/1, то достаточно убрать символ ^ из шаблона.
Вставить после 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 запросов
Вместо
Так
Или так