Cambio de estructura de enlaces permanentes - redirecciones en htaccess rompe los vínculos de archivo

wordpress.stackexchange https://wordpress.stackexchange.com/questions/1343

  •  16-10-2019
  •  | 
  •  

Pregunta

Cuando empecé con mi blog, los enlaces permanentes y estructura siguiente:

http://<domain>/%year%/%monthnum%/%day%/%postname%/

Hace algún tiempo, me cambió la estructura de enlaces permanentes a "http://<domain>/%postname%/" solamente.

Con el fin de hacer frente a los enlaces externos a la estructura de enlaces permanentes de edad, añade la siguiente línea en mi htaccess archivo:

RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ http://<domain>/$4

Ahora el problema es que la línea de redirección rompe los vínculos de archivo, por ejemplo. "http://<domain>/2010/09/02" se redirige a la página principal en lugar de mostrar los mensajes de Sept 2 del 2010.

¿Es posible corregir la directiva de redirección en htaccess, o no soy yo que va a ser capaz de comer el pastel y tenerlo también?

¿Fue útil?

Solución

RedirectMatch de mod_alias no es tan poderoso como Mod_rewrite. Si tiene Mod_rewrite en su host (enlaces permanentes Pretty hacer uso de ella, por ejemplo) que podría tomar la redirección sólo si la dirección no está en el formato del archivo de enlace.

Para prueba para ese caso, no es RewriteCond para hacer que el comando de redirección, existe la RewriteRule ... [R=301] Directiva.

Un ejemplo sobre la base de los datos:

RewriteCond %{REQUEST_URI} !^/((20|19)[0-9]{2})/([0-9]{2})/[0-9]{2}$ [NC]
RewriteRule ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)$ http://<domain>/$4 [R=301,L]

Esto no se ha probado, pero creo que debe hacer el trabajo. Tengo cuantificador usado ({2}) a una mejor specifiy la cantidad de números que usted espera. Al lado de que en el RewriteCond he creado un modelo que sólo coincide con el 20 y 19 .. .. años.

La primera línea (la condición, RewriteCond) cheques no para que coincida con un Archivo-URL y sólo si no coincide, se dará cumplimiento a la regla de hacer la redirección. El RewriteRule está haciendo básicamente lo mismo que su directiva RedirectMatch.

Licenciado bajo: CC-BY-SA con atribución
scroll top