2012-05-04 2 views
3

Я в процессе перемещения блога из dasBlog в BlogEngine. В dasBlog мои URL-адреса выглядят так.URL-адрес перенаправления с BlogEngine

http://pfsolutions-mi.com/blog/2008/03/08/Beyond-Compare.aspx

Если в BlogEngine, мои URL-адрес выглядит следующим образом.

http://pfsolutions-mi.com/blog/post/2008/03/08/Beyond-Compare.aspx

Единственное различие между этими двумя URL, является "пост" подпапка в BlogEngine.

Поскольку я использую URL-адрес URL-адреса IIS для удаления WWW из URL-адреса, я решил, что самым простым решением будет создание другого правила для обработки добавления подпапки. Я попробовал что-то вроде этого.

имя правила = "Блог Redirect" Enabled = "истина" stopProcessing = "истинный"

матч URL = "^ блог/([_ 0-9] +)/([_ 0-9] +)/([_ 0-9] +)/([_ 0-9a-z -] +). ([_ 0-9a-z -] +) $ "

action type =" Redirect "url =" blog /post/{R:1}/{R:2}/{R:3}/{R:4}.{R:5} "redirectType =" Временный "

Однако, когда я вхожу в старый URL-адрес dasBlog, он не перенаправляется в новое место. Вместо этого я получаю общую страницу ошибок BlogEngine 404.

Примечание: Я планирую изменить redirectType на постоянный, как только я знаю, что все работает.

ответ

1

Не должно ли ваше подходящее регулярное выражение больше походить на это?

match url="^blog/([0-9]+)/([0-9]+)/([0-9]+)/([\w-]+)\.([a-z]+)$" 

Там нет Подчеркивания в финиковых числах в любом случае и ваш [_0-9a-z-]+ не включает в себя прописные буквы, как в «Beyond Сравни».

Итак, мы должны иметь: URL = "^ блог/цифры/цифры/цифры/любое слово-characters.lowercase-буква $"

Мы также могли бы указать еще с:

match url="^blog/([0-9]{2,4})/([0-9]{2})/([0-9]{2})/([\w-]+)\.([a-z]{3,4})$" 

Исходя из предположения, что у вас всегда есть:

  1. год как "08" или "2008"
  2. месяц и день, как "01" или "11"
  3. файла окончаний с 3 или 4 строчными буквами (HTM, HTML, PHP, ASP, ASPX и т.д.)

EDIT: Я думаю, что "\ ш +" не включает в себя дефис, так что вы должны превратить это в " [\ w -] + "

+0

Извините, но это не помогло. Я сомневаюсь, что это «проблема с URL-адресом», потому что регулярные выражения (ваши и мои) передавали соответствующий тест соответствия в утилите URL Rewrite диспетчера IIS. –

+0

Возможно, нам нужно просто проверить это с помощью простого простого регулярного выражения (например, "^ blog /.* $ "), если это не проблема, мы можем искать другие причины, но в большинстве случаев перезаписанные 404s вызваны неправильным регулярным выражением. – Simon

Смежные вопросы