web-dev-qa-db-fra.com

Comment rediriger des URL avec des identifiants spécifiques vers de nouvelles URL sur un nouveau nom de domaine?

Je souhaite rediriger toutes les pages contenant un mot spécifique dans l'URL. Les deux sites ont les mêmes articles.

Par exemple:

videos.example.com.ph/its-showtime-hashtags-hashtags-and-dawns-popular-dance-moves_966aaafd8.html

devrait être redirigé vers

example.com.ph/its-showtime-hashtags-hashtags-and-dawns-popular-dance-moves_8a4521384.html

La différence est le domaine et l'ID à la fin. Tous les articles avec l'URL http://videos.example.com.ph et le Word its-showtime à l'intérieur doivent être redirigés vers le même article sur http://example.com.ph/

Si cela est trop difficile, une redirection vers example.com.ph page principale serait également acceptable.

3
Aesir John

Vous ne pouvez pas faire une simple redirection de "tous les articles" si les identifiants de source et de destination de l'URL sont différents et qu'il n'existe pas de moyen simple de mapper les deux. Par exemple, comment savons-nous que 966aaafd8 est mappé sur 8a4521384?

Pour ce faire, vous devez créer un RewriteMap dans la configuration de votre serveur (contenant tous les ID source/destination) ou réécrire les demandes dans un autre script qui effectue la recherche, puis le redirige.

Cependant, vous pouvez rediriger toutes les demandes vers la racine du document sur l'autre domaine, si cela vous convient. Mais c'est généralement une mauvaise expérience utilisateur (et donc mauvaise pour le référencement), si cela pose problème.

En haut de votre fichier .htaccess dans le sous-domaine videos.example.com.ph:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_Host} =videos.example.com.ph [NC]
RewriteRule ^its-showtime http://example.com.ph/ [NC,R=302,L]

Si le sous-domaine videos.example.com.ph et le domaine principal sont hébergés physiquement à des emplacements différents, vous pouvez supprimer la directive RewriteCond.

Notez que cela correspond à its-showtime au début de l'URL (comme dans vos exemples). Si vous avez besoin que cela corresponde à n'importe où dans l'URL, supprimez simplement le préfixe ^.

Notez également qu'il s'agit d'une correspondance insensible à la casse (NC - NOCASE) - si cela n'est pas nécessaire, supprimez l'indicateur NC de RewriteRule. (Le drapeau NC sur la RewriteCond doit rester, car il capture simplement les demandes malformées qui seraient autrement résolues.)

Modifiez la redirection 302 (temporaire) en redirection 301 (permanente) lorsque vous êtes sûr que tout fonctionne correctement - en supposant qu'il s'agisse d'une redirection permanente?

4
MrWhite