2009-03-06 7 views

Antwort

2

Ich empfehle die Verwendung einer Front-Controller. Das bedeutet, dass Sie die htaccess-Datei verwenden, um ALLE Anforderungen in eine einzige Datei (index.php) umzuschreiben, und dann verwenden Sie Code in dieser Datei, um zur entsprechenden Seite zu gelangen. Sie können eine Umleitung von den alten URLs zu den neuen URLs durchführen. Wenn es sich um eine neue URL handelt, werden Sie an den entsprechenden Seitencontroller weitergeleitet.

Dies wäre viel einfacher als das Schreiben großer Rewrite-Regeln für jede Art von Seite, die Sie haben könnten. Und so wird die gesamte Arbeit in der Sprache ausgeführt, die auf Ihrer Site bereits ausgeführt wird. Sie müssen also keine schreckliche riesige .htaccess-Datei lernen und pflegen, die sowieso ein Albtraum ist, mit dem Sie arbeiten können! Hier

ist ein Beispiel für eine .htaccess-Datei, die alle nicht-statische Anforderungen an index.php umleitet:

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

Dann in index.php müssen Sie die gesamte Logik der Interpretation, die Anforderung zu tun und herauszufinden, was damit zu tun ist. Persönlich mag ich das Zend Framework MVC: http://framework.zend.com/manual/en/zend.controller.html

Aber das könnte eine Menge Arbeit zu konvertieren, wenn Sie bereits in einem anderen Format haben.

+0

Ich bin hier verloren.Wie werde ich gehen tu das? Danke! –

1

Wenn Sie nur Teile der URL ändern, z. Verzeichnisse, können Sie

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

(vielleicht mit relativer URLs arbeiten, nicht getestet ...)

Wenn die Dokumentnamen auch einen Algorithmus herauszufinden, verwenden ändern müssen entweder auf einer Umleitung zu übersetzen oder Platz für jede URL, die Sie umleiten möchten. In Abhängigkeit von der Anzahl der Dokumente könnten Sie die nicht-magischen tun und völlig uncool

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 

Einige Regexp Assistenten wahrscheinlich regexps für alle Zahlen von Unterstrichen hinzufügen können, um zu plusses übersetzt werden, aber ich ‚verlassen würde, dass offen ;)

Wenn das zu viel ist, müssen Sie eigentlich nicht umschreiben, Sie könnten sich auch für ein 404-Fehlerdokument entscheiden, z

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

Dann das Skript verwenden, um die ursprüngliche URL zum Nachschlagen und Ihre Lieblings-Scripting/Programmiersprache verwenden, um alten URLs auf neue URLs zu übersetzen (die Request-Header zu untersuchen, um herauszufinden, was die ursprüngliche URL benannt ist. In PHP Ort in das Fehlerdokument (vergessen Sie nicht, es in der Produktionsversion zu entfernen) und finden Sie die ursprüngliche URL-Header in der Anfrage.Senden Sie dann eine 301 Moved Permanently Antwort mit der neuen URL

Verwandte Themen