2009-03-06 6 views

Répondre

2

Je suggère d'utiliser un contrôleur frontal. Cela signifie que vous utilisez le fichier htaccess pour réécrire toutes les requêtes dans un seul fichier (index.php), puis que vous utilisez le code dans ce fichier pour l'envoyer à la page appropriée. Vous pouvez effectuer une redirection depuis les anciennes URL vers les nouvelles URL, et s'il s'agit d'une nouvelle URL, vous devez l'envoyer au contrôleur de page approprié.

Cela serait beaucoup plus facile que d'écrire des règles de réécriture énormes pour chaque type de page que vous pourriez avoir. Et de cette façon, tout le travail est fait dans la même langue que votre site est déjà en cours d'exécution, donc vous n'avez pas besoin d'apprendre et de maintenir un fichier .htaccess énorme horrible qui tend à être un cauchemar pour travailler avec quand même!

Voici un exemple d'un fichier .htaccess qui redirige toutes les demandes non statiques à index.php:

RewriteEngine on 
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php 

Puis, en index.php vous devez faire toute la logique d'interpréter la demande et comprendre ce qu'il faut faire avec. Personnellement, j'aime utiliser le Zend Framework MVC: http://framework.zend.com/manual/en/zend.controller.html

Mais cela pourrait être beaucoup de travail à convertir si vous l'avez déjà dans un format différent.

+0

Je suis perdu ici comment vais-je fais ça? merci! –

1

Si vous modifiez simplement des parties de l'URL, par exemple, répertoires, vous pouvez utiliser

RedirectMatch ^/oldPath/(.*) http://www.example.com/newPath/$1 

(peut travailler avec urls par rapport, non testé ...)

Si les noms de document changent aussi vous devez soit trouver un algorithme pour traduire ou placer une redirection pour chaque URL que vous souhaitez rediriger. En fonction du nombre de documents que vous pourriez faire la non-magique et complètement pas cool

RedirectMatch ^/dir/first_document.html /newdir/first+document.html 
RedirectMatch ^/dir/second_document.html /newdir/second+document.html 
RedirectMatch ^/dir/third_document.html /newdir/third+document.html 

Certains assistant Regexp probablement pouvez ajouter des expressions rationnelles pour tous les numéros de underscores à traduire à plusses, mais je « quitterons que ouvert ;)

Si c'est trop, vous n'avez pas vraiment besoin de réécrire, vous pouvez également opter pour un document d'erreur 404, par exemple

ErrorDocument 404 /redirect.php (or .jsp, .asp, .whatever) 

Ensuite, utilisez ce script pour rechercher l'URL de demande initiale et utilisez votre langage de script/programmation favori pour traduire les anciens urls aux nouvelles urls (examiner les en-têtes de demande de comprendre ce que l'URL d'origine est nommé. Au lieu de PHP dans le document d'erreur (ne pas oublier de le supprimer dans la version de production) et trouver l'en-tête de l'URL d'origine dans la demande.Puis envoyer un 301 Moved Permanently Réponse avec la nouvelle URL

Questions connexes