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