Me gustaría redirigir cualquier solicitud que contenga guiones bajos a la misma url, pero con guiones reemplazando las direcciones URL. He visto un montón de foros sugieren que hago algo como esto:En htaccess, me gustaría reemplazar guiones bajos con guiones y luego redirigir al usuario la nueva url
(repetición de una versión incrementada de este RewriteRule hasta un tropecientos)
rewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ http://example.com/$1-$2-$3-$4 [R=301,L]
rewriteRule ^([^_]*)_([^_]*)_(.*)$ http://example.com/$1-$2-$3 [R=301,L]
rewriteRule ^([^_]*)_(.*)$ http://example.com/$1-$2 [R=301,L]
Mi solución actual es en php (que funciona bien) :
if(preg_match('/[_]+/', $_SERVER['REQUEST_URI'])){
$redirectUrl = preg_replace('/[_]+/','-', $_SERVER['REQUEST_URI']);
header('Location: '. $redirectUrl , TRUE, 301);
return;
}
Pero, prefiero no usar PHP & lugar mantenerlo en mi archivo .htaccess sin tener que repetir el primer RewriteRule una y otra vez con el fin de anticipar cuántos guiones podría ser cada URL. ¿Pensamientos? ¿Hay alguna manera de hacer esto sin repetir el rewriteRule incrementado?
----- ----- edición
Mi htaccess actual es sólo el estándar de WordPress uno, que es continuación:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Esta es la única manera de que me verlo funcionando, no tiene Reemplazos en la reescritura mod, solo reescribiendo reglas con patrones coincidentes. –