2009-08-28 8 views
0

Nous avons une situation où j'ai un tas d'URLs avec des paramètres de requête qui sont utilisés pour rediriger basiquement vers divers sites, un peu comme une courte URL ou un index.Réécriture d'URL/Redirection avec Querystring?

Ex: www.mysite.com/abc?x=123 qui redirige vers www.google.com www.mysite.com/abc?x=456 qui redirige vers www.yahoo.com et ainsi de suite.

Le problème est qu'il n'y a pas une page réelle "abc" maintenant ou avant, ces liens ont été créés et publiés à l'insu du site. Le problème est maintenant de trouver un moyen simple de les rendre actifs afin de pouvoir effectuer les redirections appropriées.

Ceci est actuellement sur un serveur Windows IIS. Le site principal est basé sur .NET.

Existe-t-il un moyen d'utiliser un fichier htaccess ou similaire (en supposant que nous utilisions un plugin isapi mod-rewrite pour IIS) pour permettre la création de ces redirections? Nous en avons des centaines à créer. La seule autre option que je peux penser est de les rediriger vers une page asp.net qui traiterait la logique de param et de redirection dans le code, supposons que nous pouvons faire un rredirect depuis l'URL de base vers une vraie page facilement .

Le vrai problème est de se débrouiller avec "abc? X = 456" quand il n'y a pas de page réelle et qu'aucune extension n'est donnée pour mettre une page en place.

Répondre

0

Vous pouvez utiliser HTTPRedirection. Il fera exactement ce que vous décrivez: créer un filtre pour chaque répertoire "abc" en écrivant une expression régulière pour correspondre à l'URL entrante et l'afficher dans une page URL que vous contrôlez. Cela aura lieu avant que la partie application de votre pile n'en soit consciente et devrait fonctionner de manière transparente.

0

Si abc n'existe pas, votre serveur répondra avec un 404. Dans ASP.NET, vous avez le choix de la réponse à cette question - elle figure dans le fichier web.config en tant que CustomErrors. Allumez cela, puis rediriger vers une page fantaisie 404 (peut-être que vous faites déjà). La page fantaisie 404, alors, pourrait vérifier la chaîne de requête demandée (qui est passée à la page d'erreur personnalisée comme une autre chaîne de requête) pour voir si c'est une redirection valide, vit dans votre base de données, etc. Faites simplement Response.Redirect () De là. Cela vous permet de conserver une certaine logique, de stocker ces relations dans une base de données et de ne pas les écrire toutes dans une configuration de filtre.

+0

Merci, nous avons maintenant un 404 mais nous préférerions que cela ne soit pas détecté comme un 404 dans le processus. Nous voudrions le manipuler directement et séparément si possible. – schooner

+0

Renvoyer 404 dans l'en-tête a de mauvaises implications pour être listé dans les moteurs de recherche, etc. –

+0

Ne pas avaler le 404 si vous le redirigez proprement dans un Error.aspx? Je me rappelle vaguement que vous pouvez même envoyer un 301 avant la redirection pour faire savoir aux moteurs de recherche que abc? X = 123 pointe en réalité vers example.com. Ou est-ce trop tard d'ici là? – dnord