J'essaie d'ajouter les nouvelles règles de réécriture à l'aide de l'API de réécriture:
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');
Une fois le lien permanent mis à jour, il ajoute les lignes suivantes au fichier .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]
résultant dans le fichier .htaccess
suivant:
# 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
Mais quand j'ai essayé d'accéder à l'URL suivante:
http://example.com/product/ABCDE324AB
Cela ne semble pas fonctionner. Je reçois toujours une page non trouvée. Des idées?
Ce que je comprends de ce qui précède, c’est que vous avez un fichier .htaccess et également du code correct écrit dans le même fichier, mais toujours avec le problème 404. Laissez-moi vous dire pourquoi. Votre serveur n'autorisant pas le fichier .htaccess à lire ou à annuler l'autorisation. Alors, comment pouvez-vous donner cette permission? Ouvrez votre fichier de fichier Apache httpd.conf pour AllowOverride. Vous pouvez constater qu’il est présent plusieurs fois. vérifier ci-dessous comment dans le même fichier:
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
Il suffit de remplacer AllowOverride None
par AllowOverride All
Maintenant, redémarrez Apache
et cela devrait fonctionner