Regulile de rescriere nu funcționează în WordPress

25 nov. 2013, 10:37:06
Vizualizări: 22.7K
Voturi: 8

Î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?

3
Comentarii

este o pagină WordPress sau o pagină 404 de server?

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

După ce ai făcut modificările, nu uita să mergi la Setări > Legături permanente și să dai clic pe Salvează pentru a reîmprospăta regulile de rescriere.

TomC TomC
25 nov. 2013 14:10:20

da, deja am reîmprospătat regulile de rescriere folosind legătura permanentă 'nume articol' și apoi salvând, dar tot nu funcționează.

soul soul
26 nov. 2013 01:44:40
Toate răspunsurile la întrebare 1
7
11

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.

25 nov. 2013 14:02:21
Comentarii

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

Manish Manish
25 nov. 2013 14:04:33

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.

soul soul
26 nov. 2013 09:43:56

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.

Manish Manish
26 nov. 2013 19:05:16

nici asta nu funcționează

soul soul
18 dec. 2013 05:12:43

Adică, nu poți accesa site-ul cu permalink-ul implicit?

Manish Manish
18 dec. 2013 07:55:01

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ă

soul soul
18 dec. 2013 09:50:19

ce plugin folosești pentru regulile de rescriere?

Manish Manish
18 dec. 2013 16:20:53
Arată celelalte 2 comentarii