У нас есть приложение PHP с динамической схемой URL, которая требует, чтобы символы были закодированы в процентах, даже «unreserved characters», как скобки или aphostrophes, которые на самом деле не требуются для кодирования. URL-адреса, которые приложение считает закодированными «неправильным» способом, канонизируются, а затем перенаправляются на «правильную» кодировку.mod_rewrite правило для принудительной канонической процентной кодировки
Но Google и другие пользовательские агенты будут канонизировать процентное кодирование/декодирование по-разному, что означает, что когда робот Googlebot запрашивает страницу, он будет запрашивать «неправильный» URL-адрес, а когда он вернет перенаправление на «правильный» URL-адрес, Googlebot откажутся следовать переадресации и откажутся индексировать страницу.
Да, это ошибка на нашем конце. Спецификации HTTP требуют, чтобы серверы обрабатывали процентные и незапрограммированные незарезервированные символы одинаково. Но исправление проблемы в коде приложения прямо сейчас не прямолинейно, поэтому я надеялся избежать изменения кода, используя правило перезаписи Apache, которое обеспечивало бы правильность кодирования URL-адресов с точки зрения приложения , что означает, что апострофы, круглые скобки и т. д. кодируются в процентах и что пробелы кодируются как +
, а не %20
.
Вот один пример, где я хочу переписать первый и в конечном итоге со второй формой:
- www.splunkbase.com/apps/All/4.x/Add-On/app:OPSEC + LEA + для + Check + точка + (Linux)
- www.splunkbase.com/apps/All/4.x/Add-On/app:OPSEC+LEA+for+Check+Point+%28Linux%29
Вот еще:
- 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 + закон + мошенничество + обнаружение + Add-на
Вот еще:
- www.splunkbase.com/apps/All/4.x/app:Benford%27s%20Law%20Fraud%20Detection % 20Add-на
- www.splunkbase.com/apps/All/4.x/app:Benford%27s+Law+Fraud+Detection+Add-on
Если приложение видит только вторую форму этих URL-адресов, оно не будет отправлять какие-либо переадресации, и Google сможет индексировать страницу.
Я новичок с правилами перезаписи, и из моего описания mod-rewrite documentation было ясно, что mod_rewrite выполняет некоторую автоматическую кодировку/декодирование, которая может помочь или повредить то, что я хочу сделать, хотя и не уверен.
Любые рекомендации по переписыванию правил для обработки вышеуказанных случаев? Я в порядке с правилами для каждого специального символа, так как их не так много, но одно правило (если возможно) было бы идеальным.
У вас есть полный доступ к конфигурации Apache или вы ограничены решением, которое подходит для htaccess? –
у нас есть полный доступ к конфигурации apache, хотя я подозреваю, что наша операционная команда предпочла бы минимально-инвазивное решение. –