Cadena de consulta no redirigida en directorios de nivel más profundo.
Quiero redirigir cada enlace con una cadena de consulta a una dirección específica mediante la adición de la cadena. Tengo lo siguiente en mi archivo .htaccess
de WordPress:
RewriteEngine On
RewriteCond %{QUERY_STRING} catid=([0-9]+) [NC]
RewriteRule (.*) catid%1? [R=301,L]
Cuando un usuario ingresa example.com/?catid=10
, son redirigidos correctamente a example.com/catid10
, que es lo que quiero.
Sin embargo, cuando van a un directorio más profundo (example.com/category/?catid=10
), no son redirigidos a example.com/category/catid10
.
He estado leyendo manuales pero no encuentro la respuesta.
Editar
Si esto es útil, esto es lo que WordPress ha definido en mi htaccess:
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
davy.ai
El problema es que la regla actual de
.htaccess
únicamente coincide con la cadena de consulta cuando aparece en el nivel raíz de la URL (ejemplo.com/?catid=10
). Para lograr que funcione en URLs que tienen segmentos de ruta adicionales, se necesita modificar laRewriteRule
para incluir esos segmentos en el objetivo de redirección. A continuación, se presenta una regla actualizada que debería funcionar:Al agregar
^
al principio del patrón, le indicamos a Apache que solo coincida con URLs que comiencen con el patrón. Al usar(.*)
en lugar de.*
, capturamos toda la ruta de la URL como un grupo al que podemos referirnos con$1
en la cadena de reemplazo. Al incluir ese$1
en la cadena de reemplazo (/$1catid%1
), preservamos los segmentos de ruta originales al tiempo que agregamos el valor de la cadena de consulta.¡Espero que esto ayude!