Je souhaite rediriger toutes les pages paginées des pages de catégorie vers leurs pages de catégorie respectives, car je ne souhaite pas que Google analyse les pages paginées.
Si mon URL de page de catégorie paginée est:
http://example.com/category/cat-name/page/4/
Je veux rediriger vers:
http://example.com/category/cat-name/
Ce cas peut être n'importe quoi, allant de numéros de page différents à différents noms de catégories.
Comment puis-je atteindre cet objectif avec .htaccess
?
J'utilise un site WordPress et déjà plusieurs redirections sont actives:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^[0-9]+/([^/]+/[^/]+/?)$ /$1 [L,R=301,NE]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Tout d’abord, certaines de mes règles .htaccess sont basées sur ce StackOverflow Q & A . Parce que j'ai besoin qu'ils soient là.
Donc, après vos commentaires, j'ai compris le point. Avec une telle redirection en action, les pages paginées ne seront plus accessibles, même après une URL codée en dur. Oui, ce serait un gâchis.
En fait, vous savez que WordPress les pages de catégories sont générées automatiquement avec le nombre de publications. Supposons que, dans la catégorie "Astronomie", j'ai 32 messages et que chaque page en affiche 10, il y aurait 4 pages (10 + 10 + 10 + 2). Finalement, j'ai supprimé deux des messages ou les ai recatégorisés dans une autre catégorie. Donc, la quatrième page devient orpheline. Google explore et a obtenu un 404. C'est un processus continu et la recherche de tels résultats de 404 est une question cruciale pour moi. Donc je cherche une solution.
Que puis-je faire pour un tel problème?
Basé sur les commentaires de @ w3d et plus d'informations fournies par Mayeenul:
Remplacez votre regex:
RewriteRule ^ [0-9] +/([^ /] +/[^ /] + /?) $/$ 1 [L, R = 301, NE]
avec celui-ci:
Ajoutez cette nouvelle règle:
RewriteRule ^([^/]+)/([^/]+)/page/[0-9]+/?$ /$1/$2/ [R=301,L]
Donc, votre .htaccess devrait ressembler à:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^([^/]+)/([^/]+)/page/[0-9]+/?$ /$1/$2/ [R=301,L]
RewriteRule ^[0-9]+/([^/]+/[^/]+/?)$ /$1 [L,R=301,NE]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Ceci suppose que votre URL contiendra toujours page
en tant que troisième segment d’URL et en chiffres pour les pages. Si cela ne veut pas, remplacez-le par [^/]+
, ce sera mieux (pour l'appariement) et plus facile si vous conservez ce segment tel qu'il est actuellement.
Vous pouvez tester les règles htaccess sur cet outil .
Vous pouvez utiliser certaines alternatives pour faire savoir aux robots que vous ne voulez pas que ces pages soient explorées: vous pouvez les bloquer en utilisant robots.txt, une autre façon consiste à ajouter une authentification.
Vous ne devez pas utiliser les redirections pour empêcher l'indexation de Google (vous avez dit crawler, c'est-à-dire l'indexation) de vos pages si elles sont utiles pour vos visiteurs. Si vous 301 redirect
em vos visiteurs ne les verront plus jamais, ils obtiendront toujours votre catégorie non paginée. Mais si c'est précisément ce que vous essayez de faire, les redirections sont la solution.
Si le contenu en double vous préoccupe, vous devez inclure <link rel="canonical" href="http://example.com/category/cat-name/" />
sur chacune de vos pages de catégorie paginées. Pour cette option, vous ne devez pas implémenter de redirections.
Si vous envisagez d'ajouter une vue à la page entière , c'est-à-dire votre page de catégorie principale affichant tous les éléments, il est recommandé d'utiliser rel="canonical"
pointant de pages paginées à afficher toutes les pages .
Si vous n’ajoutez pas de vue à toutes les pages , c’est-à-dire que vous conserverez toutes vos pages paginées sans ajouter une page de catégorie principale contenant tous les éléments, vous devez alors utiliser rel="prev"
, rel="next"
, comme l'a souligné @Max.
Si Google Webmaster Tools rapporte 404 error
s et qu'il s'agit bien de 404, vous pouvez les laisser tels quels, si cela ne vous dérange pas, Google supprimera éventuellement ces URL de son index. Si 404 error
s vous dérange, vous implémentez alors 301 redirect
s s'il existe un nouvel emplacement pour ces URL. Vous pouvez écrire un script PHP qui intercepte la demande et redirige si nécessaire, je ne sais pas où ce code doit être placé dans le code de WordPress, je ne suis pas un expert WP .
Une autre option consiste à ajouter ces URL inexistantes à votre .htaccess et à les rediriger une à une. Comme votre exemple http://example.com/category/cat-name/page/4/ n'existe plus, votre fichier .htaccess devrait ressembler à ceci:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^category/cat-name/page/4/?$ /category/cat-name/ [R=301,L]
RewriteRule ^([^/]+)/([^/]+)/page/[0-9]+/?$ /$1/$2/ [R=301,L]
RewriteRule ^[0-9]+/([^/]+/[^/]+/?)$ /$1 [L,R=301,NE]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress