Avatar billede kongen72 Nybegynder
03. august 2010 - 00:40 Der er 14 kommentarer og
1 løsning

301 redirect

Hej

Jeg har 3 domænenavne! Vil gerne have 2 af domænerne til, at lave en 301 redirect på mit tredje domænenavn.
Hvordan gør man det i asp.net / c#?

Tak på forhånd
Avatar billede arne_v Ekspert
03. august 2010 - 00:42 #1
Du kunne lave et HTTP module som lavede en redirect.
Avatar billede kongen72 Nybegynder
03. august 2010 - 00:55 #2
Hej arne_v

Er det SEO venligt? -og hvordan skal det opstilles helt præcis ?
Avatar billede arne_v Ekspert
03. august 2010 - 01:04 #3
Hvis der sendes en redirect til browser/Google, så er der vel ingen som interesserer sig for hvordan det er implementeret ??
Avatar billede kongen72 Nybegynder
03. august 2010 - 01:10 #4
ok tak!

men hvordan skal det helt præcis implementeres? har du et eksempel ? er lidt forvirret omkring det!

tak igen ;-)
Avatar billede kongen72 Nybegynder
03. august 2010 - 01:12 #5
noget med at mine 2 domæner skal have en blank side, med en global.asax fil i ??
Avatar billede a1a1 Novice
03. august 2010 - 01:38 #6
den simple (f.eks. i "toppen" af din masterpage)

If (Request.ServerVariables("server_name") == "www.detdummesite.dk" || Request.ServerVariables("server_name") == detdummesite.dk  (osv osv) )
{
Response.StatusCode="301";
Response.Redirect("http://www.detgodesite.dk/", true);
}

Hvis du har "gamle" link liggende på google skal du jo også sørge for at tage url og querystring med ;o)

status 301 har "intet"(direkte) at gøre med seo, det fortæller som arne skriver klienten at der ikke er noget der hedder mitsite.dk mere men nu er det samme "indhold" på www.mitsite.dk (og klienten (google eller en browser) bør/skal opdatere evt. bookmark til den nye adresse)...
MEN en ting der skulle være "smart" er KUN at have dit site (detgodesite.dk) enten med www eller uden (men seo er jo en "jungle" at finde rundt i ;o), og jeg er ikke ekspert men har lavet en del)


10.3.2 301 Moved Permanently
The requested resource has been assigned a new permanent URI and any future references to this resource SHOULD use one of the returned URIs. Clients with link editing capabilities ought to automatically re-link references to the Request-URI to one or more of the new references returned by the server, where possible. This response is cacheable unless indicated otherwise.

The new permanent URI SHOULD be given by the Location field in the response. Unless the request method was HEAD, the entity of the response SHOULD contain a short hypertext note with a hyperlink to the new URI(s).

If the 301 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.

      Note: When automatically redirecting a POST request after
      receiving a 301 status code, some existing HTTP/1.0 user agents
      will erroneously change it into a GET request.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Avatar billede arne_v Ekspert
03. august 2010 - 01:43 #7
using System;
using System.Web;

public class RedirectModule : IHttpModule
{
    public void Init(HttpApplication app)
    {
        app.BeginRequest += OnBeginRequest;
    }
    protected void OnBeginRequest(object sender, EventArgs e)
    {
        HttpApplication app = (HttpApplication)sender;
        app.Context.Response.Redirect("ERSTAT MED URL");
    }
    public void Dispose()
    {
    }
}

og en sektion i web.config:

        <httpModules>
            <add name="RedirectModule" type="RedirectModule"/>
        </httpModules>
Avatar billede a1a1 Novice
03. august 2010 - 01:47 #8
btw. så lige at i .net 4+ er der en RedirectPermanent(<url>), men den "stopper" vist ikke resten for at loade (som response.redirect(<url>,<end response (true/false)>)
;o)
Avatar billede a1a1 Novice
03. august 2010 - 01:52 #9
hey arne du glemte lige statuscode ;o)
Men ellers er det jo fino

Bruger det "samme" til at "redirecte" til "fake" .html filer (for/til google), "selvfølgelig" med server.transfer i stedet for response.redirect

;o)
Avatar billede a1a1 Novice
03. august 2010 - 02:02 #10
læste lige forkert/for hurtigt hos mikrosofts
Calling the RedirectPermanent(String) method overload terminates the response.

RedirectPermanent(String, Boolean) Performs a permanent redirection from the requested URL to the specified URL, and provides the option to complete the response.
dvs.
RedirectPermanent(url, end response)
gør det samme som
Response.StatusCode="301";
Response.Redirect("http://www.detgodesite.dk/", true);

http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx

Men jeg tror nu ikke der er "noget at hente" performance mæssigt om det er den ene eller anden redirect du laver
Avatar billede kongen72 Nybegynder
06. august 2010 - 22:33 #11
det vil sige at på mine 2 andre domæner er jeg nød til at have "indhold" på. Før de kan 301 redirectes over til mit hoved-domæne?
Avatar billede a1a1 Novice
07. august 2010 - 18:21 #12
nej du peger bare alle domæner på samme website (ip adresse) i iis, men redirecter (til samme website, men anden url/domæne) hvis det er det "forkerte" domæne, og 301 "fortæller" jo klienten at det "forkerte" domæne/url er permanent flyttet til det andet ;o)
Avatar billede kongen72 Nybegynder
08. august 2010 - 00:22 #13
Sikekert et dumt spørgsmål, men hvordan peger jeg domæner i IIS ?
Avatar billede kongen72 Nybegynder
08. august 2010 - 01:49 #14
Fandt ud af det med pegningen! :-/

Altså jeg laver en class-fil og kalder den "RedirectModule". Og som indeholder følgende:

using System;
using System.Web;

public class RedirectModule : IHttpModule
{
    public void Init(HttpApplication app)
    {
        app.BeginRequest += OnBeginRequest;
    }
    protected void OnBeginRequest(object sender, EventArgs e)
    {
        HttpApplication app = (HttpApplication)sender;
        app.Context.Response.Redirect("www.domain.dk");
    }
    public void Dispose()
    {
    }
}

og tilføjer dette i min web.config:

        <httpModules>
            <add name="RedirectModule" type="RedirectModule"/>
        </httpModules>


Så hvis jeg indtaster domain.dk i adressebaren. Så bliver jeg automatisk viderestillet til www.domain.dk. altså med www foran.

Er det hele korrekt ? - mangler jeg et eller andet ?


Tak på forhånd!
Avatar billede a1a1 Novice
08. august 2010 - 16:07 #15
du mangler lige denne

If (app.Context.Request.ServerVariables("server_name") == "www.detdummesite.dk" || app.Context.Request.ServerVariables("server_name") == detdummesite.dk  (osv osv (resten af dine forkerte urls)) )
{
app.Context.Response.StatusCode="301";
app.Context.Response.Redirect("http://www.detgodesite.dk/", true)
}

istedet for denne:
app.Context.Response.Redirect("www.domain.dk");

;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester