2008-08-05 2 views

ответ

23

Попробуйте Managed Fusion Url Rewriter и Reverse Proxy:

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] 
+0

Предложение: я бы отрегулировал первый RewriteRule, чтобы выглядеть как^/? users = (\ w *), чтобы http://www.website.com/?users=smith&day=monday не производил http://www.website.com/users/smith&day=monday – Dscoduc 2009-02-06 17:13:32

+0

Это хорошая идея и полностью поддерживается в этой версии .NET. Первоначальное намерение состояло в том, чтобы сделать мой пример совместимым с mod_rewrite, который не поддерживает этот синтаксис. – 2009-05-26 16:14:42

+0

Это потрясающе. – 2009-08-16 07:52:53

20

Скотт Гатри рассказывает, как сделать это изначально в .Net довольно широко here.

Я использовал подход httpmodule, и он работает хорошо. Это в основном то, что ManagedFusion делает для вас.

4

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

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

5

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

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

Он также будет существовать на всех веб-сайтах Azure из коробки.