2010-11-03 6 views
2

J'ai récemment changé de domaine et le nouveau site a une structure de permalien différente. Au lieu de rediriger tout de l'ancien site vers le nouveau, je voudrais configurer .htaccess pour réécrire l'ancienne URL comme chaîne de requête afin que la page demandée puisse être trouvée sans avoir à la taper dans la recherche du nouveau site .réécrire l'url en tant que requête de recherche

Par exemple:

www.oldsite.com/projects/2010/foo-bar-foobar devrait rediriger vers www.newsite.com/?s=foo+bar+foobar

Le vieux permalien La structure commence toujours par une année (4 chiffres), la nouvelle structure est complètement différente, donc je pense que la redirection vers une requête de recherche serait la meilleure option.

J'ai essayé de comprendre la regex, mais je n'arrive pas à trouver une solution qui fonctionne.

J'espère que quelqu'un peut me diriger dans la bonne direction.

Merci!

Répondre

1

Je vis toujours ces la première fois, mais vous pouvez essayer cette (dans le .htaccess sur www.oldsite.com):

RewriteRule ^/?projects/[0-9]+/(.*)$ http://www.newsite.com/?s=$1 [R] 

En anglais, cela correspond à une URL sur l'ancien site commence par une barre oblique facultative, suivie du mot "projets", puis une autre barre oblique, puis un ou plusieurs chiffres, puis une barre oblique, puis un nombre quelconque de caractères. Il redirige vers le nouveau site, en passant ce dernier groupe de "n'importe quel nombre de caractères" comme chaîne de requête. Le dernier "R" indique au moteur de réécriture d'émettre une redirection vers l'agent utilisateur.

+0

Merci. Cela a du sens pour moi. Cependant, la requête de recherche utilise les signes + et ne fonctionne pas avec les traits d'union. Existe-t-il un moyen de remplacer les traits d'union par des signes +? – Paz

+0

Cela pourrait être possible si vous aviez une quantité finie de variables:. * (-?). * (-?) Mais il serait plus agréable d'avoir des variables doublement récurrentes: ((. *) -?) + Si c'était en quelque sorte Il est possible d'obtenir la sous-variable à partir de ce que vous pourriez être en mesure de le faire, mais à mon avis cela devient si compliqué qu'il est plus facile d'écrire du php pour gérer la transition du trait d'union ... –

Questions connexes