2010-12-08 4 views
0

Je lance un nouveau site sur WordPress mais j'aimerais que tous mes anciens liens restent actifs. Pour rendre cela possible, j'ai déplacé mon site actuel dans un sous-répertoire (/ oldsite) et installé le nouveau site wordpress directement dans root.Rediriger certaines requêtes dans Subdir avec htaccess

Comment pourrais-je aller sur redirectin une url qui correspond à l'ancien style de chemin dans le répertoire/OLDSITE afin que:

http://example.com/stories/read/4231/some-story-title

est automatiquement redirigés vers

http://example.com/oldsite/stories/read/4231/some-story-title

Le même irait pour de nombreux autres modèles de domaine comme:

http://example.com/exclusives devenant http://example.com/oldsite/exclusives et un peu plus.

Je ne veux pas que toutes les requêtes soient placées dans le répertoire/oldsite, puisque je vais me fier à mon instance WordPress dans root.

.htaccess est encore un peu cryptique pour moi, donc j'apprécierais toute direction.

+0

Alors qu'est-ce type de demandes voulez-vous être redirigé? – Gumbo

+0

Je suis désolé, @Gumbo, je ne suis pas sûr de comprendre. J'essaie simplement de rediriger tous les visiteurs vers le site qui attendent l'ancien contenu dans le sous-répertoire où se trouve l'ancien contenu. – Aristotle

+0

Comment faire la distinction entre les chemins qui devraient être redirigés et ceux qui ne devraient pas l'être? Y a-t-il un modèle pour cela, par ex. un préfixe commun ou autre chose? – Gumbo

Répondre

0

Quelque chose comme ce qui suit devrait fonctionner.

RewriteCond %{REQUEST_URI} ^/(stories|exclusives)/ [NC] 
RewriteRule .* /oldsite/%1 [R=301,L] 
+0

Cela semble assez simple. Pourriez-vous expliquer le '[NC]', '[R]', et '[L]'? – Aristotle

+1

NC est insensible à la casse, R est redirigé (le 301 étant le code de réponse HTTP de redirection à utiliser) et L est la "dernière règle", par ex. arrête d'essayer de faire correspondre d'autres règles pour cette requête. Voir toutes les options ici - http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule –

0

Essayez celui

RewriteCond %{HTTP_HOST} ^(example.com)$ [NC] 
RewriteRule ^(.*)$ /oldsite/%2%{REQUEST_URI} [QSA,L] 

Il ne fait rediriger .. Il se déroulera en interne à partir du dossier OLDSITE

Si tu veux rediriger puis ajouter [R=301,L] à RewriteRule

Questions connexes