web-dev-qa-db-fra.com

Une redirection masquée 307 pour un domaine est-elle possible?

On m'a demandé de créer une redirection 307 pour un domaine, en veillant à ce qu'il soit "masqué". c'est-à-dire conserver l'URL d'origine dans la barre d'adresse.

Il n'y a pas beaucoup d'informations disponibles sur les redirections 307 (par opposition aux 301/302), mais d'après mes investigations, il semble que les redirections 307 soient similaires aux redirections 302.

J'ai le sentiment que ce qu'on m'a demandé de faire est impossible, et pour l'instant j'ai créé un iframe qui charge son site web hébergé gratuitement.

Avant que je ne regarde un idiot et que je lui retourne le voir, je lui dis que les iFrames sont le seul moyen de conserver l’URL dans la barre d’adresse. Quelqu'un peut-il le confirmer?.

Sinon, dites-moi comment créer une redirection 307. Je suppose que c'est quelque chose comme ça ... Mais comment peut-il être masqué?

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=307,L] 
6
Rob

Une redirection masquée 307 n'est pas possible. Vous pouvez rediriger ou masquer, mais pas les deux ensemble. Le code que vous avez posté dans votre question aboutira à la redirection si c'est la solution que vous souhaitez, mais je ne comprends pas pourquoi vous souhaitez une redirection 307, qui indique simplement au navigateur qu'elle ne peut pas basculer entre les méthodes GET/POST. Il est généralement recommandé de s'en tenir aux règles 301 pour les redirections permanentes et aux règles 302 pour les redirections temporaires, sauf si cela peut être utilisé sur une URL où les données POST sont attendues. Une redirection 307 n'appliquera pas en elle-même de masquage - un en-tête de redirection, que 301, 302 ou 307 modifie l'adresse du navigateur.

Bien que la plupart des masques de sites Web soient configurés et gérés à l’aide de panneaux de contrôle d’hébergement ou de noms de domaine plutôt que d’écrivant eux-mêmes leur code source, la méthode la plus utilisée de nos jours reste les anciennes balises de cadres HTML4 que tous les principaux navigateurs prennent encore en charge:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" 
  "http://www.w3.org/TR/html4/frameset.dtd">
<html>
  <frameset rows="100%">
    <frame src="http://www.masked-domain.com/" />
  </frameset>
</html>

Pour masquer les requêtes par proxy, vous pouvez utiliser PHP un code similaire à ceci dans index.php:

<?php
$sOldURL = sprintf( 'http://www.masked-domain.com/%s', $_SERVER['REQUEST_URI'] );
echo( @file_get_contents( $sOldURL ));
exit;

puis redirigez toutes les demandes vers ce fichier index.php en utilisant un fichier . htaccess:

RewriteEngine On
RewriteRule ^(.*)$ /index.php/$1 [L]
2
richhallstoke

Il est impossible de en externe rediriger (statut 3xx) et masquer la demande (c'est-à-dire conserver l'URL d'origine dans la barre d'adresse). Pour l'utilisateur final, une URL "masquée" ressemble à une requête ordinaire (200 OK). Une réponse 3xx n'est pas.

les iFrames sont le seul moyen de conserver l'URL dans la barre d'adresse.

Cependant, les iframes ne sont pas nécessairement le seul moyen de masquer l'URL. En supposant qu'il s'agisse d'une requête interdomaine, celle-ci pourrait être mandatée?

... son site web hébergé gratuitement.

Eh bien, dans ce cas, un iframe pourrait bien être le seul moyen de gérer cela!


Une partie de moi pense qu'il doit y avoir autre chose à cela? Où voulez-vous "rediriger" de?

2
MrWhite