web-dev-qa-db-fra.com

Google ne peut plus récupérer les pages après une réécriture d'URL réussie à l'aide d'un fichier .htaccess.

J'ai essayé de réécrire mes URL afin qu'elles n'aient plus l'extension .html. Mais lorsque j'ai fait cela (avec succès), Google ne peut plus explorer mes pages lorsque j'utilise "Fetch as Google". Au lieu de cela, il renvoie les erreurs 404 et indique qu'elles sont inaccessibles.

Voici ce que j'ai dans mon . Htacess fichier:

Options +Includes
AddHandler server-parsed .html
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.html [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ http://www.example.com/$1 [R=301,L]

Cela fonctionne très bien, et si je tape l'URL dans la barre d'adresse d'un navigateur, cela me prend là. Cependant, Google renvoie toujours les erreurs 404.

Je pense que cela a quelque chose à voir avec le code ci-dessus qui le réécrit en www.example.com pendant que Google demande http://www.example.com. Je ne sais pas comment résoudre ce problème cependant.

1
user2070057

Je soupçonne que tu y penses trop. Je suis vraiment confus sur tout votre code.

Une des choses que je découvre ces jours-ci, c'est que les gens utilisent un exemple de code qui est déjà inutilement compliqué. De plus, les gens semblent choisir {???} qui offre trop au lieu du choix le plus étroit. Souvent, ces choses nécessitent seulement 2 lignes ou 3 au maximum et un seul RewriteRule. Recherchez toujours les options les plus simples lorsque vous effectuez une expression régulière. Sinon, vous courez un risque de conséquences imprévues.

Maintenant, je suppose peut-être trop. Vous avez peut-être essayé de faire deux choses et mon cerveau fatigué ne pouvait pas comprendre cela. S'il vous plaît, faites-moi savoir.

J'ai testé cela ici et il a fait ce que vous avez décrit:

RewriteCond %{REQUEST_URI} (.*)\.html [NC]
RewriteRule .* http://www.example.com/%1 [R,L]

Supprimez le RewriteBase et les RewriteCond (s) et RewriteRule (s) que vous utilisez. RewriteBase n'est pas nécessaire.

Si vous avez besoin de plus d'informations, veuillez commenter et je peux/serai heureux de mettre à jour la réponse. Si j'ai raté ce que vous essayez de faire, s'il vous plaît faites le moi savoir.

2
closetnoc