Nous avons une application PHP avec un schéma d'URL dynamique qui exige que les caractères soient codés en pourcentage, même "unreserved characters" comme des parenthèses ou des aphostrophes qui ne doivent pas être codés. Les URL que l'application considère comme étant «fausses» sont canonisées, puis redirigées vers le «bon» encodage. Mais Google et les autres agents utilisateurs vont canaliser le codage/décodage en pourcentage différemment, ce qui signifie que lorsque Googlebot demandera à la page de demander la "mauvaise" URL, et quand il récupérera une redirection vers l'URL "correcte", Googlebot refusera de suivre la redirection et refusera d'indexer la page.Règle mod_rewrite pour appliquer le codage en pourcentage canonique
Oui, c'est un bug de notre côté. Les spécifications HTTP requièrent que les serveurs traitent les caractères non réservés codés en pourcentage et non codés en pourcentage de manière identique. Mais corriger le problème dans le code de l'application n'est pas simple en ce moment, donc j'espérais éviter un changement de code en utilisant une règle de réécriture Apache qui assurerait que les URL sont encodées "correctement" du point de vue de l'application , ce qui signifie que les apopstrophes, les parenthèses, etc. sont tous codés en pourcentage et que les espaces sont codés comme +
et non %20
.
Voici un exemple, où je veux réécrire la première et se retrouver avec la deuxième forme:
- www.splunkbase.com/apps/All/4.x/Add-On/app:OPSEC + LEA + pour + Check + point + (Linux)
- www.splunkbase.com/apps/All/4.x/Add-On/app:OPSEC+LEA+for+Check+Point+%28Linux%29
Voici une autre:
- www.splunkbase.com/apps/All/4.x/app:Benford's+Law+Fraud+Detection+Add-on
- www.splunkbase.com/apps/All/4.x/app:Benford%27s + droit + fraude + détection + Add-on
Voici une autre:
- www.splunkbase.com/apps/All/4.x/app:Benford%27s%20Law%20Fraud%20Detection % 20Add sur
- www.splunkbase.com/apps/All/4.x/app:Benford%27s+Law+Fraud+Detection+Add-on
Si l'application ne voit que la deuxième forme de ces URL, elle n'enverra aucune redirection et Google pourra indexer la page. Je suis un débutant avec les règles de réécriture, et il était clair à partir de ma lecture de la mod-rewrite documentation que mod_rewrite fait un codage/décodage automatique qui peut aider ou blesser ce que je veux faire, mais je ne suis pas sûr.
Un conseil pour les règles de réécriture pour gérer les cas ci-dessus? Je suis OK avec une règle pour chaque caractère spécial car il n'y en a pas beaucoup, mais une seule règle (si possible) serait idéale.
Avez-vous un accès complet à la configuration Apache, ou êtes-vous limité à une solution .htaccess-friendly? –
nous avons un accès complet à apache config, bien que je soupçonne que notre équipe ops préférerait une solution peu invasive. –