web-dev-qa-db-fra.com

Rediriger une seule URL vers la même URL sur un autre domaine

J'essaie de configurer mon fichier .htaccess pour prendre le lien affiché et l'acheminer vers le lien de destination comme indiqué ci-dessous

Lien affiché http://www.my-website.com/click-4559226-10388358?url=https%3A%2F%2Fdestination-website2.com%2FItem.php%3Fid%3D44350396%26sld%3DA6D7A632-821E-4b78-ACD0-147658B77BD6

Lien de destination http://www.destination-website.com/click-4559226-10388358?url=https%3A%2F%2Fdestination-website2.com%2FItem.php%3Fid%3D44350396%26sld%3DA6D7A632-821E-4b78-ACD0-147658B77BD6

En réalité, tout ce qui change est la première URL (http://www.my-website.com), tout ce qui suit est identique.

Est-ce possible et quelqu'un pourrait-il expliquer brièvement comment j'y arriverais?

* Juste pour clarifier les choses, je ne veux pas tout rediriger de my-website.com. Juste des liens qui commencent http://www.my-website.com/click-4559226-10388358

1
thatguy

Essayez ceci dans votre fichier .htaccess:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_Host} ^www.olddomain.com$[OR]
RewriteCond %{HTTP_Host} ^olddomain.com$
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]

Si vous ne conservez pas la chaîne de requête, essayez de remplacer la dernière ligne du code ci-dessus par

RewriteRule / http://www.newdomain.com/?%{QUERY_STRING} [R=301,L]

edit:

Si vous souhaitez uniquement limiter la règle à www.my-website.com/click-4559226-10388358, essayez de remplacer la dernière ligne du code ci-dessus par ceci:

    RewriteRule ^click\-([0-9]+)\-([0-9]+)$ http://www.newdomain.com/click-$1-$2?%{QUERY_STRING} [R=301,L]
1
Emmanuel

Juste des liens qui commencent http://www.my-website.com/click-4559226-10388358

Pour rediriger uniquement les liens dont le chemin d’URL est (exactement) /click-4559226-10388358 vers l’URL identique d’un autre domaine, tout en conservant la chaîne de requête, procédez comme suit: Fichier .htaccess dans la racine du document.

Cela utilise mod_rewrite, et devrait arriver en haut du fichier si vous avez d'autres directives:

RewriteEngine On
RewriteCond %{HTTP_Host} ^(www\.)?my-website\.com$ [NC]
RewriteRule ^click-4559226-10388358$ http://www.destination-website.com/$0 [R=302,L]

Si les domaines source et de destination sont situés sur des serveurs différents, vous pouvez omettre la directive RewriteCond.

Modifiez la redirection 302 (temporaire) en 301 (permanent) lorsque vous êtes sûr que tout fonctionne correctement. Les redirections permanentes sont mises en cache par le navigateur et peuvent donc poser des problèmes lors des tests.

1
MrWhite

Si tout ce qui change est la chaîne de requête, il devrait être possible de le faire sans mod_rewrite. L'utilisation d'une directive Redirect directe est plus efficace et souvent nettement plus rapide que la correspondance d'expression régulière avec un RedirectRule. Voici l'instruction Redirect, dans un fichier .htaccess à la racine de votre site:

Redirect /click-4559226-10388358 http://www.destination-website.com/click-4559226-10388358

Comme l'a souligné w3d, vous devriez tester cela avant de passer à une redirection permanente:

Redirect 301 /click-4559226-10388358 http://www.destination-website.com/click-4559226-10388358

Redirect et RedirectMatch transmettent la chaîne de requête à l'URL cible sans la modifier.

1
Stephan

Sur www.my-website.com:

Redirect permanent / http://www.destination-wabsite.com/
0
ChrisJ

En supposant que mod_rewrite soit activé sur votre serveur, vous voudriez mettre quelque chose comme:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_Host} ^www\.my-website\.com$ [NC]
RewriteRule ^(.*)$ http://www.destination-website.com/$1 [QSA,L]
</IfModule>

Cela redirigera toutes les demandes de www.my-website.com vers www.destination-website.com. Le [NC] indique à Apache de fonctionner en mode insensible à la casse et le [QSA, L] lui dit de conserver tous les paramètres de chaîne de requête et qu'aucune autre règle ne doit être suivie. Plus d'informations peuvent être trouvées sur site web d'Apache .

0
sgb