По поводу ограничения в 150 строк. А если не запихивать весь список из сотни адресов в одно правило, а разделить его на несколько правил. По полсотни на каждый RewriteRule.
Чтобы правило работало только для адресов внутри одного раздела /pred/ нужно RewriteRule ^ заменить на RewriteRule ^pred/
Значит адреса имеют такой вид /pred/part1/part2/
В part1 разрешается gde-kupit-saiding, kupit-fasadnye-paneli, kupit-vodostoki, prochee.
В part2 разрешается centralnii-federalnii-okrug и какие-нибудь key2, key3, key4.
Если в part1 или part2 кроме разрешенного значения есть что-то лишнее, то сделать редирект на правильный адрес.
Ну раз \b не работает с кириллицей в UTF-8, то можно попробовать через cвойства unicode-символов.
Шаблон проверяет, что вокруг слова нет других букв.
Для многобайтовых нужен U
~is меняем на ~Uis
Только вот модификатор U (PCRE_UNGREEDY) вовсе не для этого. Он просто инвертирует жадность квантификаторов.
Тут нужен u (PCRE_UTF8). http://php.net/manual/ru/reference.pcre.pattern.modifiers.php
~is меняем на ~uis
Первый вариант не меняет домен
http://site.ru/? => http://site.ru/
http://www.site.ru/? => http://www.site.ru/
Второй вариант всегда отправляет на домен с www
http://site.ru/? => http://www.site.ru/
http://www.site.ru/? => http://www.site.ru/
Настроил правило
RewriteRule ^forum/ / [L,R=301]
но оно не цепляет такие урлы http://www.сайт.ru/forum/блаблабла?start=138 в итоге такие урлы редиректятся на /?start=138
Как сделать чтобы ВСЕ урлы форума, независимо от знаков редиректились на главную?
Сбросить GET параметры при редиректе можно добавив знак вопроса
Если я правильно понял, то нужно вот так
Или так
Тогда даже не знаю, в чем может быть проблема.
Правило для ЧПУ, которое направляет запросы на /bitrix/urlrewrite.php
Порядок следования правил имеет значение.
Редиректы должны быть записаны раньше правила для ЧПУ.
По поводу ограничения в 150 строк. А если не запихивать весь список из сотни адресов в одно правило, а разделить его на несколько правил. По полсотни на каждый RewriteRule.
Чтобы правило работало только для адресов внутри одного раздела /pred/ нужно RewriteRule ^ заменить на RewriteRule ^pred/
Значит адреса имеют такой вид /pred/part1/part2/
В part1 разрешается gde-kupit-saiding, kupit-fasadnye-paneli, kupit-vodostoki, prochee.
В part2 разрешается centralnii-federalnii-okrug и какие-нибудь key2, key3, key4.
Если в part1 или part2 кроме разрешенного значения есть что-то лишнее, то сделать редирект на правильный адрес.
Директива RewriteMap не работает в файле htaccess. Она может использоваться только в контексте server config, <VirtualHost>.
Так что для её примененения нужен доступ к файлам конфигурации веб-сервера (httpd.conf)
прописал, редиректит все, кроме самого каталога:
site.ru/каталог1/ на site.ru/ - не редиректит
Достаточно заменить квантификатор + на *
А если имя каталогов отличается только цифрами.