12
votes

Quelle est la différence entre réponse.redirect et statut de réponse 301 Redirection dans ASP?

Notre application ASP passe à un nouveau serveur et je souhaite mettre en place une redirection de l'URL permanente. Je suis au courant des deux approches suivantes, mais je dois comprendre lequel à utiliser et quand.

option 1: xxx

option 2: < Pré> xxx

merci,

nikhil.


0 commentaires

4 Réponses :


1
votes

réponse.redirect () (et la méthode équivalente redirectpermanent () pour un 301) fait beaucoup de choses dans les scènes. IT NULL vérifie la chaîne d'URL demandée, l'encode, appelle les gestionnaires d'événements pour l'événement redirigation s'il y en a des appels et enfin intervention.end () , qui afflit le Réponse au navigateur et abandonne le fil actuel.

En fin de compte, vous ne remarquerez probablement pas beaucoup de différence entre les en-têtes de réglage manuellement et appeler Redirect.

Incidemment, il existe plus d'options (et meilleures) pour la manipulation de cela. IIS a un Module de réécriture d'URL , qui vous permettrait de rediriger une URL donnée sans jamais appeler votre page En tant que gestionnaire de demande et gérez de manière centrale votre URL pour la gestion plus facile des moteurs de recherche.


5 commentaires

Exactement ce que j'ai dit dans ma réponse. Il n'y a aucun moyen d'avoir une réponse.redirect faire 301.


Vous appelez Response.ReRirectPermanent (). Ça appelle juste la réponse.redirect (). De toute façon, comment est la réponse de ma réponse?


Il n'appelle pas la réponse.redirect en interne. De quoi parlez-vous dans le monde? Ils définissent les deux en-têtes et le statut de réponse - Ni l'un ni l'autre n'appelle l'autre.


Quant à la façon dont il est faux - "En fin de compte, vous ne remarquerez probablement pas beaucoup de différence entre les deux." C'est une déclaration complètement fausse. Réponse.redirect fait une redirection 302. Réglage du statut de réponse et de l'en-tête directement comme s'il montre une redirection de 301. Si vous ne connaissez pas la différence entre les deux, vous ne devriez pas répondre à aucune question Web.


Juste pour référence, voici le code de RedirectPerManant: void public redirectpermanent (string URL) {this.redirect (URL, vrai, vrai); }



0
votes

Une redirection normale sera par défaut utilisée http Statut 302 < / a>. Une redirection avec Statut 301 ne sera pas indexé par Searchbots (comme Googlebot) et s'ils étaient, ils seront supprimés des index existants. Très utile si vous souhaitez "mettre à jour" une ancienne URL à une URL plus récente. La SearchBot indiquera de toute façon les redirections avec le statut 302, vous risquez donc de vous retrouver avec la pollution dans les résultats de la recherche. Vous utiliseriez normalement le statut 302 pour par exemple le modèle PRG et le statut 301 pour permanents redirections comme vous le faisez maintenant.


0 commentaires

14
votes

Réponse.redirect Problèmes A 302, qui est une redirection temporaire. 301, en utilisant la réponse.Ajouter à votre liste, est destiné aux redirections permanentes.

Les différences entre 301 et 302 ont une certaine importance pour l'optimisation des moteurs de recherche. Un 301 tiendra tous vos classements de recherche de l'ancien emplacement. Sur le côté bascule, si vous ne voulez pas que votre nouvelle page soit indexée, vous pouvez utiliser une réponse.redirect (302) puisque les moteurs envisageront la redirection temporaire. Google n'expend pas 302's car beaucoup de spammeurs l'utilisent pour tenter d'augmenter leur classement.

Puisque vous vous déplacez de manière permanente sur un nouveau serveur, un 301 est le meilleur moyen d'aller.


0 commentaires

-2
votes

Response.redirect Envoie un code d'état "302 - déplacé temporairement" sur le navigateur, qui peut ou non être correct en fonction de ce que vous faites. Si vous redirigez vers l'emplacement correct pour votre contenu, vous souhaitez effectuer la redirection 301 car les moteurs de recherche ne seront pas rampés correctement contre un 302.


10 commentaires

Ce n'est pas 100% correct. Response.redirect n'envoie que 302 si vous définissez le drapeau "permanent" sur false. Il peut envoyer un 301 ou 3022. Il a la possibilité de faire les deux, il n'a pas besoin de définir manuellement les en-têtes pour envoyer un 301.


@womp - Vous n'avez absolument aucune idée de ce dont vous parlez. Il n'y a pas de drapeau "permanent". La fonction Response.redirect prend un ou deux paramètres - URL cible et éventuellement un booléen pour mettre fin à la réponse. Veuillez vous éduquer: msdn.microsoft.com/en-us/library/a8wa7sdt. Aspx


@womp - au cas où vous ne pouvez pas lire cette page entière - voici la partie importante pour vous - "ASP.NET effectue la redirection en renvoyant un code d'état HTTP 302."


Vous prenez la question de savoir plus littéralement que moi. Il peut utiliser Response.ReRirectricePermanent () S'il veut envoyer un 301. J'ai interprété sa question comme "définir les en-têtes manuellement ou utiliser la redirection?". Vous n'avez toujours pas dit ce qui n'allait pas avec ma réponse.


@womp - il a demandé spécifiquement de la réponse.redirect vs. Réglage des en-têtes de réponse. Votre réponse est complètement fausse à cet égard. Vous n'avez également fait référence à cette fonction de votre réponse. Et Response.redirectriceManent est neuf sur ASP.NET 4.0, c'est donc très probablement probable qu'il n'utilisait pas cela, sinon il aurait renvoyé cela.


@womp - Comme il a demandé une question spécifique sur deux méthodes, ne pensez-vous pas que vous devriez le prendre littéralement? Il n'a pas posé de questions sur une fonction magique où vous avez défini un drapeau mythique qui n'existe pas dans .NET, comme votre réponse et vos commentaires suggèrent qu'il fait.


Il a posé une question spécifique sur "Deux approches" à la redirection de l'URL, non spécifiques. Le gist de ma réponse était ce que rediriger () a fait dans les coulisses au lieu de régler les en-têtes manuellement. Je n'ai même pas mentionné 301 vs 302 et non plus l'OP . Mon interprétation était entièrement valide. Votre hostilité est déconcertante.


@womp - On dirait bien qu'il a demandé la différence entre deux choses spécifiques - réponse.redirect et une redirection 301. Sinon, il n'aurait pas mentionné l'établissement de l'état 301 spécifiquement. Lorsque vous déclarez qu'ils sont la même chose, vous êtes complètement faux. Et pendant que nous y sommes, puisque vous avez voté ma réponse, qu'est-ce qui ne va pas avec ma réponse; Vous savez, celui qui répond à sa question?


Rien n'est faux avec votre interprétation ou votre réponse - j'ai pris l'offensive à votre attitude snarky et à vos commentaires hostiles et vous avez bownted vous. Vous trouverez que cela se produit.


Rien d'hostile sur mes commentaires - quand vous vous trompez, vous vous trompez. Si vous ne pouvez pas gérer cela, vous devriez peut-être vous cacher dans une boîte quelque part.