2010-07-13 7 views
0

J'ai récemment migré un site WordPress vers un nouveau serveur et un nouveau nom de domaine. Pour rediriger le trafic de l'ancien site vers le nouveau, je mets en place un simple fichier .htaccess une ligne:301 Redirection sauf pour une personne utilisant .htaccess?

Rediriger 301/http://www.newsite.com/

Maintenant, cependant, le client veut accéder à l'ancien site. Y a-t-il un moyen de permettre à une personne de rediriger tout le monde vers le nouveau site?

Répondre

0

Si le client dispose d'une adresse IP statique (relativement), vous pouvez faire quelque chose comme ça en place de ce que vous avez actuellement:

RewriteEngine On 

# Replace with the appropriate IP address 
RewriteCond %{REMOTE_ADDR} !=192.168.0.1 
RewriteRule .* http://www.newsite.com%{REQUEST_URI} [R=301,L] 

Sinon, vous pourriez être en mesure de faire quelque chose comme ça .. .

RewriteEngine On 

RewriteCond %{THE_REQUEST} !\?noredirect 
RewriteCond %{HTTP_REFERER} !^http://www\.oldsite\.com 
RewriteRule .* http://www.newsite.com%{REQUEST_URI} [R=301,L] 

et puis (en supposant que leur navigateur envoie le referrer) ils pourraient accéder à l'ancien site à http://www.oldsite.com/?noredirect et, espérons-les liens suivants qu'ils ont cliqué après cela correctement sans rediriger vers le nouveau site. Je n'ai pas testé cela, donc j'ai peut-être oublié quelque chose.

+0

Merci beaucoup! La deuxième règle fonctionne parfaitement. L'adresse IP du client change trop souvent pour utiliser l'adresse IP, l'ajout d'un paramètre à l'URL est donc idéal. Je vous remercie! – NatalieMac

2

Vous pouvez faire votre redirection conditionnelle en ajoutant une directive RewriteCond avant que la directive Redirect:

RewriteCond %{SOMETHING} !the-client 

CHOSE est une variable de serveur, vous pouvez utiliser pour identifier le client et le client est un modèle qui identifie le client.

Par exemple, si votre client vient toujours d'une adresse IP connue, vous pouvez l'utiliser:

RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$ 
Redirect 301/http://www.newsite.com/ 

Voir http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html pour plus des variables serveur qui sont disponibles si l'adresse IP ne fonctionne pas pour votre situation.