web-dev-qa-db-fra.com

Les outils Google pour les webmasters me montrent le contenu dupliqué sur la même page après la suppression de l'extension php

Quand j'utilise l'option Récupérer en tant que Google ... montre-moi les problèmes suivants

duplicate content meta title
the story of....
/lifestyle/serialul-scorpion-inspirat-dintr-o-poveste-adevarata-a-lui-walter-o-brien.php
/lifestyle/serialul-scorpion-inspirat-dintr-o-poveste-adevarata-a-lui-walter-o-brien

Descoperă topul 10 a celor mai friguroase locuri din lume
/travel/descopera-top-10-care-sunt-cele-mai-friguroase-locuri-din-lume.php
/travel/descopera-top-10-care-sunt-cele-mai-friguroase-locuri-din-lume

ce fait est arrivé après que j'ai enlevé l'extension php ... en utilisant le htaccess

#remove the php extension
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
5
Stefan

Lorsque vous modifiez un structure d'URL existante, vous devez rediriger les anciennes URL (qui ont probablement été indexées et liées) aux nouvelles URL. (Pour le bénéfice du référencement et de l'expérience utilisateur.)

Dans votre cas, les anciennes URL (avec une extension .php -) qui ont été indexées - sont toujours accessibles et renvoient le même contenu que l’URL sans l’extension .php. Donc, vous avez contenu dupliqué - deux URL différentes qui renvoient le même contenu.

Vos directives existantes réécrire en interne l'URL sans extension vers la même URL mais avec une extension .php. Avant ces directives, vous devez redirection externe toutes les demandes de fichiers .php vers l'URL sans extension. Cependant, vous devez faire attention à une boucle de réécriture. Afin d'éviter une boucle de réécriture, vous pouvez vérifier sur THE_REQUEST (qui ne contient jamais que l'URL de la demande initiale). Par exemple:

RewriteEngine On

# Redirect old URLs to new
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ .*\.php\ HTTP/
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule (.*)\.php$ /$1 [R=301,L]

Ce qui précède dit, pour tous demandé URL qui se terminent par .php qui existent sous la forme d'un fichier réel, puis redirection vers la même URL moins l'extension .php .

Suivi de vos directives existantes:

# Rewrite new (extensionless) URLs to the actual file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [L]

Il n'est pas nécessaire d'échapper au point (.) dans une classe de caractères. Dans une classe de caractères, un point est un point littéral. J'ai enlevé le drapeau NC qui semblait superflu. (J'ai aussi changé votre commentaire ... ces directives ne "suppriment pas l'extension php", elles l'ajoutent! Vous avez probablement déjà supprimé l'extension .php dans les liens de votre application, sinon votre site ne fonctionnera pas maintenant.)

3
MrWhite

J'ai une solution beaucoup plus simple qui vous permet de maintenir la convivialité de vos URL. Voici le code .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*).php/?$ [NC]
RewriteRule ^(.*)/?$ /? [R=301,L]

L'idée est que tout invité essayant d'accéder à tout élément du domaine se terminant par .php (quel que soit le cas de l'extension) avec ou sans la barre oblique finale sera redirigé vers la page d'accueil. J'utilise cette idée sur mon site pour mettre en colère des pirates informatiques potentiels.

J'indexe ensuite les URL conviviales sans les extensions de fichier avec Google, puis tout va bien. zéro problème de contenu en double.

Seul inconvénient avec ma méthode est que si vous avez plusieurs fichiers php où les URL (une avec et une sans extension php) renvoient exactement le même contenu et les fichiers php ne sont jamais mis à jour, ma méthode entraînera les invités qui accèdent au site avec l'extension php pour recommencer à la page d'accueil.

Encore une fois, si vous publiez des nouvelles sur votre page d’accueil et que vous publiez des sections mises à jour (adresses mises à jour) de votre site auprès de vos invités via la page d’accueil et que ces derniers visitent naturellement votre page d’accueil en premier, mon idée serait alors parfaite.

En réalité, assurez-vous que lorsque deux URL renvoient exactement le même contenu, au moins une de ces conditions est vraie:

  1. Une URL renvoie une page de redirection qui envoie l'utilisateur à l'autre URL.
  2. L'URL qui est la copie dupliquée de la page a un <link rel="canonical" href="x"> dans son code HTML. "x" est remplacé par l'URL de la copie originale de la page.
  3. L'URL qui est la copie a un <meta name="robots" content="noindex"> dans son code HTML. J'ai tendance à utiliser cela souvent.
0
Mike