Правило 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 выполняет некоторое автоматическое кодирование / декодирование, которое может помочь или навредить тому, что я хочу сделать, хотя и не уверен.

Какой-нибудь совет для правил переписывания, чтобы обращаться с вышеупомянутыми случаями? Я согласен с правилом для каждого специального символа, так как их не так много, но одно правило (если возможно) будет идеальным.

Ответы на вопрос(2)

Ваш ответ на вопрос