Considere um .htaccess
arquivo que deve converter todos os sublinhados em traços e substitua um .html
sufixo potencial por uma barra no nome do arquivo.
Exemplo de URL do cliente: http://foo.com/a_b/c_d.html
Exemplo de URL para redirecionar:http://foo.com/a-b/c-d/
Eu tenho usado esta regra para substituir o .html
sufixo:
RewriteRule ^(.*)\.html$ $1/ [R,L]
Eu encontrei este post fantástico serverfault.SE para a reescrita de sublinhado:
RewriteRule ^(.*)_(.*)_(.*)_(.*)$ /$1-$2-$3-$4 [R,L]
RewriteRule ^(.*)_(.*)_(.*)$ /$1-$2-$3 [R,L]
RewriteRule ^(.*)_(.*)$ /$1-$2 [R,L]
No entanto, apenas um dos tipos de substituição acontece , o que ocorrer primeiro no .htaccess
arquivo. Não consigo configurar .htaccess
para realizar as duas substituições.
Isso significa que o código a seguir substituirá apenas o .html
sufixo :
RewriteRule ^(.*)\.html$ $1/ [R,L]
RewriteRule ^(.*)_(.*)_(.*)_(.*)$ /$1-$2-$3-$4 [R,L]
RewriteRule ^(.*)_(.*)_(.*)$ /$1-$2-$3 [R,L]
RewriteRule ^(.*)_(.*)$ /$1-$2 [R,L]
E o código a seguir substituirá apenas os sublinhados:
RewriteRule ^(.*)_(.*)_(.*)_(.*)$ /$1-$2-$3-$4 [R,L]
RewriteRule ^(.*)_(.*)_(.*)$ /$1-$2-$3 [R,L]
RewriteRule ^(.*)_(.*)$ /$1-$2 [R,L]
RewriteRule ^(.*)\.html$ $1/ [R,L]
Como deve .htaccess
ser configurado para substituir o .html
sufixo e os sublinhados?