Regulile de rescriere nu funcționează în WordPress
Încerc să adaug noi reguli de rescriere folosind API-ul de rescriere:
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');
După ce permalink-ul este actualizat, acesta adaugă următoarele linii în fișierul .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]
rezultând următorul fișier .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
Dar când încerc să accesez următorul URL:
http://example.com/product/ABCDE324AB
Nu pare să funcționeze. Primesc întotdeauna o pagină "not found". Aveți vreo idee?

Din ceea ce înțeleg din cele de mai sus, aveți un fișier .htaccess și, de asemenea, codul corect scris în același fișier, dar totuși întâmpinați problema de eroare 404. Permiteți-mi să vă spun de ce. Serverul dvs. nu permite citirea sau suprascrierea permisiunilor pentru fișierul .htaccess. Deci, cum puteți acorda această permisiune? Deschideți fișierul Apache httpd.conf și căutați AllowOverride. Veți vedea că este prezent de mai multe ori. Verificați comentariul de mai jos în același fișier:
# AllowOverride controlează ce directive pot fi plasate în fișierele .htaccess.
# Poate fi "All", "None" sau orice combinație a cuvintelor cheie:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
Pur și simplu înlocuiți AllowOverride None
cu AllowOverride All
.
Acum reporniți APACHE
și ar trebui să funcționeze.

Acest lucru vă poate ajuta și pe dumneavoastră: http://httpd.apache.org/docs/current/mod/core.html#allowoverride

se pare că override-ul funcționează de fapt, deoarece atunci când am referențiat un fișier care este în afara WordPress, a fost capabil să urmeze regulile de rescriere. Doar că nu înțeleg de ce nu ar funcționa cu paginile WordPress.

ok, deci fă următorul lucru. fă o copie de rezervă a fișierului tău htaccess și elimină tot codul, apoi adaugă codul implicit htaccess în acest fișier. apoi mergi la pagina de permalinkuri și selectează permalinkul implicit. după aceea accesează site-ul, sunt sigur că site-ul va funcționa. Apoi încearcă cu alte setări de permalinkuri.

permalink-ul implicit funcționează când introduc ceva de genul site.com?page_id=7 dar regulile personalizate de rescriere pe care le-am adăugat încă nu funcționează. Nu va funcționa dacă folosesc doar permalink-ul implicit, dar nici dacă folosesc permalink-ul cu numele postării nu funcționează
