2009-11-30 7 views
1
wordpress

je dois rediriger une URL unique Wordpress qui est formaté comme ceci: www.bluewidgets.com/?p=123 à une URL propre sur un autre domaine. Comment puis-je faire cela via .htaccess? Tous les didacticiels que j'ai vus indiquent que je dois spécifier une autre partie de l'URL, comme index.php, avant la chaîne de requête, mais mon URL n'en a pas - c'est juste le domaine, puis la chaîne de requête.Réorientation a/p = xxx URL

+0

Que voulez-vous dire par "url propre"? www.bluewidgets.com/?p=123 doit être redirigé vers www.redwidgets.com/?p=123? Ou www.bluewidgets.com/?p=123 à www.redwidgets.com/post/really-cool-widgets? Les différents domaines ont-ils les mêmes identifiants ou les mêmes URL? Est-ce que vous souhaitez rediriger tous les anciens ids ou tout simplement ceux spécifiques ?: – GmonC

+0

Je veux dire www.bluewidgets.com/?p=123 à www.redwidgets.com/post/really-cool-widgets Les différents domaines n'ont pas l'un des mêmes éléments plus. Je veux juste rediriger une URL particulière. – Liza

Répondre

1

ne pouvez-vous ajouter juste à header.php, avant toute autre chose:

<? php 
if ($_GET['p'] == '123') { 
    header('Location:http://www.yourotherdomain.com'); 
exit; 
} 

? J'ai fait quelque chose de similaire dans le passé. Ce n'est peut-être pas joli, mais cela fonctionne - je serais intéressé d'entendre des php-ers plus expérimentés si c'est une tactique légitime.

+0

Salut, j'ai essayé de mettre le code que vous avez donné dans différentes parties de header.php (au dessus de la section , dans la section , mais j'obtiens cette erreur (montrant différentes lignes en fonction de l'endroit où je l'ajoute bien sûr): Parse error: syntax error, T_IF inattendue /home1/bluewidgets/public_html/foobar/wp-content/themes/scribblings/header.php sur la ligne 2 Je ne me dérange pas d'utiliser cette méthode du tout au lieu de htaccess, juste avoir du mal à le faire fonctionner – Liza

+1

Changez la première ligne en à la fin, puis essayez cela –

+0

Cela a fonctionné parfaitement, merci!: D Et merci à tous qui a aidé. – Liza

0

Est-ce que wordpress n'a pas déjà de jolies URL? Juste par curiosité, pourquoi auriez-vous besoin de faire cela. En dehors de cela, oui ce que vous mentionnez est comment vous le feriez via htaccess. Rencontrez-vous un problème avec cette méthode?

+0

Le problème est que j'ai deux domaines: domain1.com et domain2.com. J'ai d'abord eu mon blog sur domain1.com, puis le nom réel de mon site est devenu disponible pour s'enregistrer alors j'ai enregistré domain2.com et fait de mon domaine primaire et de domain1.com par-dessus. Cet article particulier - domain1.com/?p=xxx - a un post payé et l'URL doit rester là pour que je puisse être payé chaque mois. Cependant, je veux maintenant séparer domain1.com et domain2.com et utiliser domain1.com à d'autres fins. J'ai donc besoin d'implémenter une redirection de l'URL de ce domaine1 vers l'URL de l'URL de domaine2 – Liza

+0

Et ce que je mentionne semble exiger qu'il y ait un autre bit dans l'URL, comme /index.php?p=xxxx - comme le montre mon URL pas le bit index.php, juste le /? p = xxxx donc en essayant cette méthode cela n'a pas fonctionné. – Liza

0

Une norme 301 redirect est dans le format (et serait à domain1):

Redirect 301 /filename.php http://domain2.com/filename.php 

mais je viens d'essayer cela avec permaliens par défaut et il ne fonctionne pas.

Sur domain1, vous pouvez réécrire l'URL avec le bloc de réécriture, wordpress, puis rediriger immédiatement ce tp domain2. Sale, mais ça pourrait marcher.

+0

J'ai essayé le code que vous avez posté plus tôt, il ne semble pas fonctionner avec les chaînes de requête. Vous ne savez pas comment réécrire l'URL comme vous le souhaitez: S – Liza

+0

Avez-vous wordpress sur domain1? Ou quelque chose d'autre qui utilise mod_rewrite et pourrait entrer en conflit avec wordpress? – markratledge

+0

Domain1 et domain2 exécutent deux installations Wordpress différentes. – Liza

1

Essayez cette règle:

RewriteCond %{QUERY_STRING} =p=123 
RewriteRule ^$ /foo/bar? [L,R=301] 

Ou en utilisant REQUEST_URI:

RewriteCond %{REQUEST_URI} =/?p=123 
RewriteRule ^$ /foo/bar? [L,R=301] 

Notez que les modèles RewriteCond commencent par un = qui identifie une comparaison lexicographique au lieu d'un test régulier des expressions. En outre la requête vide dans la substitution (indiquée par …?) qui supprimera la requête initialement demandée.

Questions connexes