2011-06-04 5 views
0

Merci d'avance.301 Directement depuis les anciens dossiers du site vers la nouvelle structure du site

J'ai refait mon site avec de nouvelles structures de dossiers

structure du site Ancien: www.domain.com/folder/file.aspx

Nouvelle structure du site: www.domain.us/folder/ file.php

Notez le nouveau TLD. J'ai environ 20 dossiers que je veux rediriger. Est-il possible de le faire avec un fichier ou dois-je faire un 301 pour chaque dossier individuel de l'ancien site vers le nouveau site? Quelle est la meilleure façon de gérer cela?

Encore une fois, Merci à l'avance

+0

L'une des structures a-t-elle été modifiée et avez-vous des ReqriteRules? Il serait préférable que les 404 soient interceptées avant d'en envoyer une 301. – Emyr

+0

Vous dites que les structures des dossiers ont changé, mais dans votre exemple, elles sont identiques, seul le TLD et l'extension ont changé. Avez-vous des exemples spécifiques de la façon dont les dossiers ont changé? Il est difficile de répondre à votre question sans un exemple plus précis dans ce cas. Cependant, vous devriez pouvoir faire tout cela à partir d'un seul fichier .htaccess à la racine, bien que cela puisse nécessiter une ligne pour chaque dossier. –

Répondre

1

Vous devez utiliser mod_rewrite pour cela. Mettez cela dans le fichier .htaccess dans le public_html dossier de votre FTP:

RewriteEngine On 
RewriteRule ^([^.]+)\.aspx$ $1.php [L] 

Cela devrait faire en sorte que lorsque quelqu'un appelle Banana.aspx ils arrivent à voir Banana.php.

0

Si vous utilisez la redirection 301 PHP header(), je crains que cela ne puisse se faire qu'un par un.

Mais si vous utilisez mod_rewrite pour gérer cela pour vous, cela est une source pertinente pour vous d'avoir un regard: http://www.gnc-web-creations.com/301-redirect.htm

1

Le fichier .htaccess dans le répertoire a priorité sur tout fichier .htaccess dans le parent répertoires. Donc, si vous avez déjà un fichier .htaccess dans chacun de vos sous-répertoires, alors mettre un fichier .htaccess dans votre répertoire racine n'a aucun sens. Supprimez les fichiers .htaccess de chacun de vos sous-répertoires que vous souhaitez rediriger et mettez à jour le fichier .htaccess dans votre dossier racine.

Vous devez probablement mettre 20 règles de réécriture comme celle-ci. Gardez à l'esprit que la suppression de .htaccecss des sous-répertoires supprimera toutes les restrictions que vous auriez pu mettre sur ce dossier.

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com 
RewriteRule ^folder/file\.aspx$ http://domain.us/folder/file.php [R=301,NC,L] 
RewriteRule ^folder2/file\.aspx$ http://domain.us/folder2/file.php [R=301,NC,L] 

301 pour redirect permanent, NC pour No Case, L pour règle de la dernière à traiter si les matchs

OU

Mettre à jour le fichier .htaccess dans chaque répertoire que vous souhaitez rediriger

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com 
RewriteRule ^(.*)\.aspx$ http://domain.us/folder/$1.php [R=301,NC,L] 

#the following might also do; just test it out 
#RedirectPermanent (.*)\.aspx$ http://domain.us/folder/$1.php 

Donc, selon votre situation, vous en choisissez un. J'irais avec l'option un afin que toutes les redirections sont en un seul endroit. Vous pouvez toujours déplacer les restrictions du .htaccess des sous-répertoires vers le .htaccess de la racine.

Questions connexes