Las reglas de reescritura no funcionan en WordPress
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?

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

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

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.

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.

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

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
