Перезапись URL-адресов ASP.NET

Как мне переписать URL-адрес в ASP.NET?

Я бы хотел, чтобы пользователи могли переходить на

http://www.website.com/users/smith

вместо того

http://www.website.com/?user=smith

Ответов (3)

Решение

Попробуйте Managed Fusion Url Rewriter и обратный прокси:

http://urlrewriter.codeplex.com

Правило для переписывания этого будет следующим:

# clean up old rules and forward to new URL
RewriteRule ^/?user=(.*)  /users/$1 [NC,R=301]

# rewrite the rule internally
RewriteRule ^/users/(.*)  /?user=$1 [NC,L]

Microsoft теперь поставляет официальный модуль перезаписи URL-адресов для IIS: http://www.iis.net/download/urlrewrite

Он поддерживает большинство типов перезаписи, включая установку переменных сервера и подстановочных знаков.

Он также будет изначально существовать во всех веб-экземплярах Azure.

Я использовал httpmodule для перезаписи URL с www.urlrewriting.net с большим успехом (хотя я считаю, что это гораздо более ранняя и более простая версия)

Если у вас очень мало фактических правил перезаписи, то сопоставления URL-адресов, встроенные в .NET 2.0, вероятно, являются более простым вариантом, в Интернете есть несколько описаний их , 4guysfromrolla кажется довольно исчерпывающим, но, как вы можете видеть, они не поддержка сопоставлений регулярных выражений как таковая представляется довольно бесполезной в динамической среде (если предположить, что «кузнец» в вашем примере не является особым случаем, тогда они бесполезны)