Eu tenho uma situação bastante estranha em que nossos URLs antigos estão terminando .-detail
e precisam ser alterados para apenas -detail
.
Por exemplo:
example.com/product.-detail
precisa mudar paraexample.com/product-detail
Em outras palavras, as .
necessidades de remoção.
Achei que uma simples regra 301 resolveria o problema, mas estou tendo problemas para passar a string de condição
RewriteRule ^$.-detail https://www.example.com/$1-detail [R=301,L]
Qual seria a maneira correta de fazer isso, por favor?
Existem alguns problemas com o regex:
$
(âncora de fim de corda) está no lugar errado. Isso deve estar no final do regex (você deseja corresponder.-detail
ao final do caminho da URL, ou seja,\.-detail$
).$1
referência anterior sempre estará vazia.O
RewriteRule
padrão (primeiro argumento) deve ser mais ou menos assim:A
^
(âncora de início de string) não é necessária, pois o regex é ganancioso por padrão e o ponto corresponde a "tudo". (Embora você possa incluí-lo se facilitar a leitura.)A
$1
referência anterior contém a parte do caminho da URL correspondente ao subpadrão entre parênteses(.+)
.Você pode capturar ambas as partes, antes e depois do ponto, para salvar a repetição da string literal na substituição . Por exemplo:
A
$2
referência inversa simplesmente contém a string-detail
, conforme capturada do segundo grupo de captura noRewriteRule
padrão .