Перезапись URL в ASP.Net

Я хочу реализовать перезапись URL-адресов таким образом, чтобы пользователь мог получить доступ к веб-сайту с именем пользователя.домен.com

например
www.abc.com/login.aspx
Я должен иметь доступ к этому, как
www.username.abc.com/login.aspx

blogspot также является одним из примеров, таких как http://username.blogspot.com/

Пожалуйста, предложите мне, как я могу это сделать.

Спасибо


person Muhammad Akhtar    schedule 21.08.2009    source источник
comment
Я могу ошибаться, но я не знаю, возможно ли переписать URL так же, как вы используете поддомены. Если это то, что вам нужно сделать через IIS, я уверен.   -  person The real napster    schedule 21.08.2009


Ответы (3)


По сути, вам нужно использовать такой инструмент, как Managed Fusion URL Rewriter and Reverse Proxy, со следующим правилом: .

RewriteCond {HOST}    www\.(.*)\.abc\.com
RewriteRule ^/login.aspx$    /login.aspx?domain=%1
RewriteRule ^/login.aspx?domain=www\.(.*)\.abc\.com$  /login.aspx?user=$1

Так что это придет к вашему внутреннему приложению, например

URL: www.nick.abc.com/login.aspx
Internal URL: www.abc.com/login.aspx?user=nick

Вам нужно решить, к чему вы не обращались, - это как вы собираетесь получить имя пользователя и как вы собираетесь обрабатывать их внутри.

Но на самом деле вам не нужен URL Rewriter. Вы просто перенаправляете весь DNS-трафик на один и тот же IP-адрес, а затем обрабатываете домен в своем приложении вместо того, чтобы контролировать его через DNS.

person Nick Berardi    schedule 24.08.2009
comment
эти правила должны быть помещены в файл ManagedFusion.Rewriter.txt? - person Muhammad Akhtar; 04.09.2009
comment
да, они должны быть помещены туда, очевидно, ваши правила будут отличаться от тех, которые я разместил выше. - person Nick Berardi; 05.09.2009
comment
получение исключения при доступе к rt.nexapps.com/Login.aspx, пожалуйста, проверьте, спасибо - person Muhammad Akhtar; 07.09.2009
comment
В экземпляре объекта не задана ссылка на объект. Описание: во время выполнения текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде. Сведения об исключении: System.NullReferenceException: ссылка на объект не указывает на экземпляр объекта. Ошибка источника: во время выполнения текущего веб-запроса было создано необработанное исключение. Информацию о происхождении и расположении исключения можно определить с помощью приведенной ниже трассировки стека исключений. - person Muhammad Akhtar; 07.09.2009
comment
поскольку моя проблема до сих пор не решена, вы очень хорошо со мной сотрудничали и дали быстрый ответ, я очень признателен и благодарен за вашу любезную помощь .. поэтому я отмечаю ваш ответ и голосую... Еще раз спасибо .. - person Muhammad Akhtar; 27.11.2009

Это возможно при установленном на сервере ISAPI Rewrite.

Вы должны поместить это в файл httpd.ini веб-сайта.

# Convert http://example.com to http://www.example.com/
RewriteCond Host: ^example.com
RewriteRule (.*) http\://www\.example.com$1 [I,RP]

# Assuming we have limited number of shared folders.
# We will execute them accordingly regardless of the subdomain.
# Example: http://sub1.example.com/img/logo.jpg -> /img/logo.jpg
# Example: http://www.example.com/img/logo.jpg -> /img/logo.jpg
RewriteRule (/css/.*) $1 [I,O,L]
RewriteRule (/js/.*) $1 [I,O,L]
RewriteRule (/img/.*) $1 [I,O,L]

#Redirect all other subdirectories not matching
#to the list above as subdomains
#example: www.example.com\sub1 -> sub1.example.com
RewriteCond Host: www\.example\.com
RewriteRule /(\w*)/(.*) http\://$1\.example\.com$2 [I,RP]

# If the web site starts with www then point the file to the root folder
# If you specifically created a folder /www/ then you can comment out this section.
RewriteCond Host: (?:www\.)example.com
RewriteRule (.*) $1 [I,O,L]

# Any web site starts other than www will be re-mapped to /<subdomain>/
# Example: http://sub1.example.com/default.asp -> /sub1/default.asp
# Note: if the folder does not exists, then the user will get a 404 error automatically.
RewriteCond Host: (.*)\.example.com
RewriteRule (.*) /$1$2 [I,O,L]

#Fix missing slash char on folders
#This has to be at the end because if invalid dir exists,
#we should show 404 first
RewriteCond Host: (.*)
RewriteRule ([^.?]+[^.?/]) http\://$1$2/ [I,RP]

Важнейшей частью является вот эта:

# Any web site starts other than www will be re-mapped to /<subdomain>/
# Example: http://sub1.example.com/default.asp -> /sub1/default.asp
# Note: if the folder does not exists, then the user will get a 404 error automatically.
RewriteCond Host: (.*)\.example.com
RewriteRule (.*) /$1$2 [I,O,L]

Это лучший способ, который я мог найти. Если у вас нет доступа к серверу и не установлен ISAPI, то это не для вас.

Вот ссылка на статью http://www.seoconsultants.com/windows/isapi/subdomains/

person The real napster    schedule 21.08.2009

Попробуйте это в веб-конфигурации под system.web

<system.web>
    <urlMappings enabled="true">
      <add url="~/myaccount" mappedUrl="myaccount.aspx"/>
    </urlMappings>

в коде за файлом писать

Response.redirect("~/myaccount")`

Это работает на 100%

person Tanmay Nehete    schedule 26.02.2014