Absolute URLs in Datenbank aktualisieren

Gelegentlich kommt es vor, dass ConPresso an eine andere Stelle umgezogen werden muss. Da Links absolut in der Datenbank gespeichert werden, gibt es zwei Möglichkeiten:

  1. Datenbank-Dump erstellen, Anpassung des Dumps, Einspielen des Dumps
  2. direkte Änderung in der Datenbank

Im folgenden beschreibe ich kurz die MySQL-Befehle, die für die zweite Variante nötig sind. Diese kann man am einfachsten mit Hilfe eines Administrationstools wie phpMyAdmin benutzen.

WICHTIG: Vor einer solchen Aktion immer ein Backup der Datenbank ziehen, damit man den urspruenglichen Stand bei Problemen wiederherstellen kann.

MySQL hat eine Funktion "REPLACE", mit der sich Strings austauschen lassen:

 REPLACE(str,from_str,to_str)

Diese kann man jetzt nutzen, um die nötigen Felder zu aktualisieren (verschieben von http://www.conpresso.de/conpresso/ nach http://www.conpresso.de/cpo/):

 UPDATE cpo4_content_html 
     SET html = REPLACE(html, 'http://www.conpresso.de/conpresso/', 'http://www.conpresso.de/cpo/');

 UPDATE cpo4_content_urls 
     SET url = REPLACE(url, 'http://www.conpresso.de/conpresso/', 'http://www.conpresso.de/cpo/');

Achtung: Die Tabelle cpo4_navtree sollte man nicht so aktualisieren, weil die URLs da in einer speziellen PHP-Form gespeichert werden. Es ist einfacher, die Links in der Navigation im System selbst anzupassen. Dasselbe gilt für eventuelle Einstellungen von Modulen in cpo4_modules.

Ich nutze anschließend noch die Suchfunktion von phpMyAdmin, um die gesamte Datenbank nach der URL zu durchsuchen und eventuell vergessene URLs zu finden.

Basis-URL

Wenn die Basis-URL in den Systemeinstellungen fest gesetzt wurde, kann es sein, dass das System nach dem Verschieben nicht mehr funktioniert. Dann kann man die Basis-URL in der Datei _cfg/common-local.inc.php direkt angeben (als Vorlage kann man die _cfg/common-local.inc.php.dist benutzen).

 $base_url = 'http://www.conpresso.de/cpo/';

Anschliessend sollte man den Wert in den Systemeinstellungen korrigieren und die Änderung in der Datei rückgängig machen, um wieder zum "regulären" Betrieb zurückzukommen.