При написании mod_rewrite
правил правила применяются в том порядке, в котором они появляются.
В вашем случае вы бы хотели, чтобы ваши RedirectMatch
до появлялись перед любыми другими правилами перезаписи - это особенно верно, если вы удаляете index.php из ваших URL-адресов ExpressionEngine .
В вашем примере, если вы хотите перенаправить определенный каталог (т. е. группа шаблонов ExpressionEngine), следующее правило будет действовать, позволяя остальной части сайта нормально функционировать:
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect Only Matching Directories
RewriteCond %{REQUEST_URI} ^/(weddings|weddings/.*)$
RewriteRule ^(.*)$ http://www.domain.co.uk/more-weddings/$1 [R=301,L]
</IfModule>
Убедитесь, что это правило отображается до ваше удаление index.php (пример ниже):
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect Only Matching Directories
RewriteCond %{REQUEST_URI} ^/(weddings|weddings/.*)$
RewriteRule ^(.*)$ http://www.domain.co.uk/more-weddings/$1 [R=301,L]
# Removes ExpressionEngine index.php from URLs
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
Если вы хотите, чтобы Google и другие сканеры видели ваш контент как временно перемещенный (код ответа 302, по умолчанию) или перемещенный навсегда (301), обязательно настройте RewriteRule Flags соответствующим образом.