Как переписать URL-адреса, в конце которых есть случайный% 20? - PullRequest
4 голосов
/ 16 августа 2011

Я получил несколько обратных ссылок на мой сайт с правильным URL-адресом, за исключением того, что был случайный завершающий пробел, поэтому ссылки вышли с завершающим %20, что приводит к ошибке страницы не найденной.

Я попробовал варианты на этом:

RewriteRule ^/%20 /

но это не работает.

Требуется ли оператор RewriteCond?

Обратите внимание, что это сервер IIS 6, и это страницы Wordpress, на которые я ссылаюсь.

Кто-нибудь, пожалуйста, сообщите ему секретный код, чтобы избавиться от %20 в конце URL.

спасибо!

1 Ответ

2 голосов
/ 17 августа 2011

Вы можете перенаправить навсегда все соответствующие URL-адреса, имеющие конечный %20, на тот же URL-адрес без конечного %20, используя следующее правило:

Если вы используете UrlDecoding Offв вашем iirf.ini используйте:

RedirectRule (.*)%20$ $1 [R=301]

В противном случае IIRF автоматически декодирует URL-адрес для вас, прежде чем пытаться применить правила.Поэтому вы можете использовать:

RedirectRule (.*)\s$ $1 [R=301]

Чтобы проверить это с помощью testdriver.exe:

  1. Поместите указанное выше правило в файл с именемiirf.ini.
  2. Создайте файл с именем SampleUrls.txt, содержащий несколько тестовых URL, например:

    /                      NO REWRITE
    /%20                   REDIRECT 301 /
    /article               NO REWRITE
    /article%20            REDIRECT 301 /article
    
  3. Вызовите testdriver с помощью команды, аналогичной %iirfpath%\testdriver.exe -d .

Обратите внимание: testdriver не декодирует URL-адреса.

Вы должны получить вывод, подобный следующему (я удалил некоторые новые строки):

TestDriver: linked with 'Ionic ISAPI Rewriting Filter (IIRF) 2.1.1.28 x64 RELEASE'.
TestDriver: The IIRF library was built on 'Aug  8 2011 02:26:29'

Processing URLs...(.\SampleUrls.txt)

***
Retrieving server variable that is not supported by TestDriver (SCRIPT_NAME)

NO REWRITE '/' ==> --
OK

***
Retrieving server variable that is not supported by TestDriver (SCRIPT_NAME)

REDIRECT 301 '/%20' ==> '/'
OK

***
Retrieving server variable that is not supported by TestDriver (SCRIPT_NAME)

NO REWRITE '/article' ==> --
OK

***
Retrieving server variable that is not supported by TestDriver (SCRIPT_NAME)

REDIRECT 301 '/article%20' ==> '/article'
OK


0 Errors in 4 Total Trials
...