Las reglas de reescritura no funcionan en WordPress

25 nov 2013, 10:37:06
Vistas: 22.7K
Votos: 8

Estoy intentando agregar nuevas reglas de reescritura usando la API de reescritura:

add_rewrite_rule('product/([A-Z0-9]{10})', 'index.php/product/?asin=$1', 'bottom');
add_rewrite_rule('product/(([A-Za-z0-9_])*)', 'index.php/product/?product=$1', 'bottom');
add_rewrite_rule('compare/((([A-Z0-9]{10}),?)*)', 'index.php/compare/?asin=$1', 'bottom');
add_rewrite_rule('categories/(([A-Za-z0-9]|\-|\_)*)', 'index.php/categories/?subcategory=$1', 'bottom');

Después de actualizar los enlaces permanentes, se agregan las siguientes líneas al archivo .htaccess:

RewriteRule ^product/([A-Z0-9]{10}) /index.php/product/?asin=$1 [QSA,L]
RewriteRule ^product/(([A-Za-z0-9_])*) /index.php/product/?product=$1 [QSA,L]
RewriteRule ^compare/((([A-Z0-9]{10}),?)*) /index.php/compare/?asin=$1 [QSA,L]
RewriteRule ^categories/(([A-Za-z0-9]|\-|\_)*) /index.php/categories/?subcategory=$1 [QSA,L]

resultando en el siguiente archivo .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^product/([A-Z0-9]{10}) /index.php/product/?asin=$1 [QSA,L]
RewriteRule ^product/(([A-Za-z0-9_])*) /index.php/product/?product=$1 [QSA,L]
RewriteRule ^compare/((([A-Z0-9]{10}),?)*) /index.php/compare/?asin=$1 [QSA,L]
RewriteRule ^categories/(([A-Za-z0-9]|\-|\_)*) /index.php/categories/?subcategory=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Pero cuando intento acceder a la siguiente URL:

http://example.com/product/ABCDE324AB

Parece que no funciona. Siempre obtengo una página de "no encontrado". ¿Alguna idea?

3
Comentarios

¿es una página 404 de WordPress o del servidor?

Mark Kaplun Mark Kaplun
25 nov 2013 13:10:55

Una vez que hayas realizado los cambios, no olvides ir a Configuración > Enlaces permanentes y hacer clic en Guardar para actualizar las reglas de reescritura.

TomC TomC
25 nov 2013 14:10:20

sí, ya actualicé las reglas de reescritura usando el permalink 'nombre de la entrada' y guardándolo, pero todavía no funciona.

soul soul
26 nov 2013 01:44:40
Todas las respuestas a la pregunta 1
7
11

Lo que entiendo de lo anterior es que tienes un archivo .htaccess y también el código correcto escrito en ese mismo archivo pero aún así obtienes el error 404. Déjame decirte por qué. Tu servidor no está permitiendo que el archivo .htaccess sea leído o no tiene permisos de sobreescritura. Entonces, ¿cómo puedes dar este permiso? Abre tu archivo Apache httpd.conf y busca AllowOverride, verás que aparece varias veces. Busca el siguiente comentario en el mismo archivo:

# AllowOverride controla qué directivas pueden colocarse en archivos .htaccess.
    # Puede ser "All", "None", o cualquier combinación de las palabras clave:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

Simplemente reemplaza AllowOverride None por AllowOverride All

Ahora reinicia APACHE y debería funcionar

25 nov 2013 14:02:21
Comentarios

Esto también puede ayudarte: http://httpd.apache.org/docs/current/mod/core.html#allowoverride

Manish Manish
25 nov 2013 14:04:33

parece que la anulación (override) realmente está funcionando porque cuando hice referencia a un archivo fuera de WordPress, pudo seguir las reglas de reescritura. Simplemente no sé por qué no funcionaría con las páginas de WordPress.

soul soul
26 nov 2013 09:43:56

Ok, haz esto: haz una copia de seguridad de tu archivo htaccess y elimina todo el código, luego añade el código htaccess predeterminado a este archivo. Después ve a la página de enlaces permanentes y selecciona el enlace permanente predeterminado. Luego accede al sitio, estoy seguro de que funcionará. Después intenta con otra configuración de enlaces permanentes.

Manish Manish
26 nov 2013 19:05:16

esto tampoco funciona

soul soul
18 dic 2013 05:12:43

¿Quieres decir que no puedes acceder al sitio con el permalink predeterminado?

Manish Manish
18 dic 2013 07:55:01

el permalink predeterminado funciona cuando ingreso algo como site.com?page_id=7 las reglas de reescritura personalizadas que agregué todavía no funcionan. Realmente no funcionará si solo uso el permalink predeterminado, pero si uso el permalink de nombre de publicación, tampoco funciona

soul soul
18 dic 2013 09:50:19

¿Qué plugin estás usando para las reglas de reescritura?

Manish Manish
18 dic 2013 16:20:53
Mostrar los 2 comentarios restantes