Sua diretiva parece OK, exceto se estiver em .htaccess
, então você precisará remover o prefixo de barra do padrão RewriteRule
. Por exemplo:
RewriteRule ^forums/(.+)/(.+)\[(.+)\](.+)/(.+)$ /forums/$1/$2$3$4/$5 [R=301,L]
As diretivas RewriteRule
em um contexto diretório (que inclui .htaccess
) correspondem ao caminho da URL menor que o prefixo do diretório . O prefixo de diretório sempre termina com uma barra, portanto, o caminho da URL com o qual o padrão RewriteRule
é iniciado nunca começa com uma barra.
Você pode precisar adicionar o L
flag se você (planeja) tiver mais diretivas. (Eu também alterei o primeiro grupo capturado de .*
para .+
, pois uma correspondência de largura zero aqui é impossível.
ATUALIZAÇÃO:
The htaccess where I put this code is in
/
directory. There is also.htaccess
in/forums
directory
Se houver um arquivo .htaccess
existente no subdiretório /forums
que também usa o mod_rewrite, então (por padrão) isso substituirá completamente a diretiva acima (no seu arquivo root .htaccess
). A diretiva acima não será processada.
A maneira mais fácil de resolver isso é mover a diretiva acima para o arquivo /forums/.htaccess
(próximo ao topo). Como esse redirecionamento é específico para o fórum, essa também parece ser a abordagem mais lógica. No entanto, você também precisa alterar o padrão RewriteRule
para ler:
RewriteRule ^(.+)/(.+)\[(.+)\](.+)/(.+)$ /forums/$1/$2$3$4/$5 [R=301,L]