2011-02-01 7 views
4

У меня есть вопрос, связанный с перенаправлениемUrl Перенаправление в классическом Asp странице

Я хочу, чтобы применить перенаправление, если кто-то использует http://mywebsite.com/ то URL будет перенаправлено на http://www.mywebsite.com/. Я знаю, что это перенаправление 302, но я не знаю, как применять его при кодировании ........ что VBScript можно использовать для перенаправления?

Мой сайт построен в классическом ASP и VBScript ... любой кусок кода будет лучше для меня

Благодаря

ответ

12

Используйте Request.ServerVariables("HTTP_HOST"), чтобы получить хост чтобы вы могли проверить, начинается ли она с www. или нет.

Если это не то просто выдать Response.Redirect() на соответствующий URL, так как он будет делать 302 для вас:

например

If Left(Request.ServerVariables("HTTP_HOST"), 4) <> "www." Then 
    Dim newUri 
    'Build the redirect URI by prepending http://www. to the actual HTTP_HOST 
    'and adding in the URL (i.e. the page the user requested) 
    newUri = "http://www." & Request.ServerVariables("HTTP_HOST") & Request.ServerVariables("URL") 

    'If there were any Querystring arguments pass them through as well 
    If Request.ServerVariables("QUERY_STRING") <> "" Then 
    newUri = newUri & "?" & Request.ServerVariables("QUERY_STRING") 
    End If 

    'Finally make the redirect 
    Response.Redirect(newUri) 
End If 

выше делает редирект обеспечения запрашиваемой страницы и строку запроса сохраняется

+0

Использование этого кода от RobV с перенаправлением 302, которое я опубликовал в своем ответе, будет полным решением. – Randam

+1

@Randam 'Response.Redirect()' все равно 302, поэтому нет необходимости вручную устанавливать код состояния и заголовки - см. Http://msdn.microsoft.com/en-us/library/ms524309.aspx – RobV

+0

Спасибо за решение – NewbieFreak

4

Попробуйте это:

Response.Status = "302 Moved Temporary" 
Response.AddHeader "Location", "http://www.mywebsite.com/" 
+0

благодаря Randam это также правильное решение для задачи – NewbieFreak

+0

но применить это решение, разве есть некоторые проверки, которые должны применяться, как @Robv сделали ... 'If Left (Request.ServerVariables (" HTTP_HOST "), 4) <>" www. " Тогда Response.Status = «302 Moved Temporary» Response.AddHeader «Location», «http://www.mywebsite.com/» end if 'и с кодом @Robv, я также мог бы сохранить и повторы ... – NewbieFreak

+0

Что бы быть точкой сохранения QueryString, но не Path/ScriptName? –

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