http://www.xxxxxxxx.de/hamburg/kanzlei/
Eine weitere, wenig beachtete Möglichkeit besteht darin mit
ErrorDocument 404 /index.php
in der Serverkonfiguration (oft: .htaccess) auf die index.php verweisen und dann $_SERVER['REQUEST_URI'] mit explode() zu zerlegen:
Vorliegend würde ein Aufruf von http://www.xxxxxxxx.de/hamburg/kanzlei/ dazu führen, dass in $_SERVER['REQUEST_URI'] dann '/hamburg/kanzlei/' steht.
Diesen also etwa wie folgt behandeln:
$str = trim($_SERVER['REQUEST_URI'], '/'); 
$str = preg_replace( '#//+#' , '/' , $str ); 
behandeln. Das Ergebnis wäre 'hamburg/kanzlei'.
Dann explode:
$ar = explode('/', $str);
Tja. Und dann noch etwas wie:
if ( 1 < count( $ar ) ) {
   $item = array_pop( $ar );
   $arKategorien = $ar;
   require_once( $_SERVER['DOCUMENT_ROOT'] . '/lib/getDocument.php' );
   getDocument($item, $arKategorien);
} else {
   $arKategorien = false;
   $item = $ar[0];
   require_once( $_SERVER['DOCUMENT_ROOT'] . '/lib/getDocument.php' );
   getDocument($item, $arKategorien);
} 
lib/getDocument.php zum Erzeugen der Webseite bzw. der Suche nach dem Dokument enthalten.
Lauffähiges Testskript mit Berücksichtigung der alten Adressierung:
<?php
$_SERVER['REQUEST_URI'] = '/München/Kanzlei//Anwälte/Andreas+Mustermann';
ob_start();
$str = trim($_SERVER['REQUEST_URI'], '/');
$str = preg_replace( '#//+#' , '/' , $str ); 
$ar = explode('/', $str);
if (! isset($_GET['page']) ) {
    if ( 1 < count( $ar ) ) {
        $item = array_pop( $ar );
        $arKategorien = $ar;
        
        getDocument($item, $arKategorien);
    } else {
        $arKategorien = false;
        $item = $ar[0];
        
        getDocument($item, $arKategorien);
    }
} else {
    header( 'Status: 301 Document moved' );
    header( 'Location: /' . rawurlencode( $_GET['page'] ) );
    echo 'Location: /' . rawurlencode( $_GET['page'] ) , "\n";
}
exit;
function getDocument( $item , $arKategorien ) {
    header( 'Content-Type: text/plain; charset=utf-8' );
    echo 'Item: "' . urldecode( $item ) . '"', "\n";
    echo 'Kategorien: '; print_r( $arKategorien );
    echo "\n";
}