RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # http[s]://server/ort/seite/ , http[s]://server/ort/seite RewriteRule ^(.*)/(.*)/{0,1}$ index.php?ort=$1&page=$2 [L,QSA] # http[s]://server/seite/ , http[s]://server/seite RewriteRule ^/(.*)/{0,1}$ index.php?page=$1 [L,QSA]
Das wollte Christoph mMn aber gerade umgekehrt.
Nö. Genau so... der Request http://server/ort/seite/ soll nach Ankunft auf dem Server zu http://server/index.php?ort=Hamburg&page=Kanzlei umgebaut werden.
Viel wichtiger ist dann aber, dass er die vom System zu sendenden (Response) Links auch in die neue Form bringt.
Naja. Fingerübung.
<?php
ob_start(); # Ausgaben speichern
header( 'Content-Type: text/plain; charset=utf-8' ); # Nur für den Test!
#... Testseite "bauen";
########
echo <<<EOT
<ul>
<li><a href="https://server/index.php?page=impressum">Impressum</a></li>
<li><a href="http://server/index.php?page=impressum">Impressum 2</a></li>
<li><a href="/index.php?page=impressum">Impressum</a></li>
<li><a href="https://server/index.php?ort=Hamburg&page=Kanzlei">Wir in Hamburg</a></li>
<li><a href="http://server/index.php?ort=Hamburg&page=Kanzlei">Wir in Hamburg 2</a></li>
<li><a href="/index.php?ort=Hamburg&page=Kanzlei">Wir in Hamburg 3</a></li>
<li><a href="https://server/index.php?page=Kanzlei&ort=Hamburg">Wir in Hamburg 4</a></li>
<li><a href="http://server/index.php?page=Kanzlei&ort=Hamburg">Wir in Hamburg 5</a></li>
<li><a href="/index.php?page=Kanzlei&ort=Hamburg">Wir in Hamburg 6</a></li>
</ul>
EOT;
########
$out = ob_get_contents(); # Seite aus Speicher holen
ob_clean(); # Speicher löschen, sonst wird der nochmals ausgegeben!
#Ein paar müde Ersetzungen:
$s[] = 'https://server';
$s[] = 'http://server';
$out = str_replace($s, '', $out);
$s = array();
$s[] = '/index.php\?ort=(.*)\&page=(.*)(["\'])';
$r[] = '/\1/\2/\3';
$s[] = '/index.php\?page=(.*)\&ort=(.*)(["\'])';
$r[] = '/\2/\1/\3';
$s[] = '/index.php\?page=(.*)(["\'])';
$r[]='/\1/\2';
for ( $i=0 ; $i < count($s) ; $i++ ) {
$s[$i] = '#' . str_replace('#', '\#', $s[$i]) . '#'; # Begrenzer für Regex!
$out = preg_replace( $s[$i] , $r[$i] , $out);
}
echo $out;
Ausgabe:
<ul>
<li><a href="/impressum/">Impressum</a></li>
<li><a href="/impressum/">Impressum 2</a></li>
<li><a href="/impressum/">Impressum</a></li>
<li><a href="/Hamburg/Kanzlei/">Wir in Hamburg</a></li>
<li><a href="/Hamburg/Kanzlei/">Wir in Hamburg 2</a></li>
<li><a href="/Hamburg/Kanzlei/">Wir in Hamburg 3</a></li>
<li><a href="/Hamburg/Kanzlei/">Wir in Hamburg 4</a></li>
<li><a href="/Hamburg/Kanzlei/">Wir in Hamburg 5</a></li>
<li><a href="/Hamburg/Kanzlei/">Wir in Hamburg 6</a></li>
</ul>