mod_rewrite - URL umschreiben + umleiten

Hallo,

ich habe einmal ausprobiert meine URLs bei meinem jetzigen Projekt umzuschreiben, da es für den User später einmal einfacher sein soll zu erkennen, wo er sich gerade befindet.

Es läuft so weit alles gut mit der Umschreibung. Allerdings habe ich noch eine Frage: Gibt es einen „Trick“ wo man die URLs auch in der PHP-Datei automatisch umschreiben kann. Sprich in der php-Datei steht irgendwo

<a href="index.php?site=profile" [...]

Ich hätte jetzt gerne, damit ich nicht alles umschreiben muss, dass das automatisch geschieht. Also zu

<a href="profile.html" [...]

Ist das irgendwie möglich? Oder muss ich da mit der Hand nachbessern, was ich eigentlich nicht glauben kann…

Danke euch!

Du könntest höchstens per Suchen & Ersetzen arbeiten. Manche Editoren haben einige sehr mächtige Werkzeuge dafür.

Ok … danke dir!
Aber wie macht das z.B. eine Forensoftware wie diese. Da kann man, wenn gewünscht, die URL-Umschreibung aktivieren, oder eben nicht. Und da muss auch niemand die URLs per Suchen & Ersetzen bearbeiten.

Bei komplexen Softwarelösungen wie Forensoftware, CMS etc. gibt es einen Linkgenerator der den Link auf Grundlage von übergebenen Parametern zusammensetzt. Sowas kann man durchaus auch selbst basteln, muss dazu aber sicher eine bestehende Webseite komplett anpassen damit es funktioniert. Beispiel:

<a rel="nofollow" href="<?php echo linkgeneratorfunktion("linkziel","endung"); ?>">

würde so einen Link generieren

<a href="linkziel.endung">

oder auch so einen wenn das System eine andere Einstellung hat:

<a href="/linkziel/endung">

Ah ok … vielen Dank!
Werde ich mir einmal anschauen.

Ich habe dazu kürzlich einen etwas verunglückten Artikel(anfang) verfasst (bedarf dringend der Erweiterung).

Die Quintessenz ist dennoch richtig:

Jeder interne Link innerhalb einer Seite sollte durch den Einsatz einer speziellen Funktion abstrahiert werden.

Diese Funktion kann dabei ganz einfach aussehen:

[php]function url(array $params = array())
{
$q = ‚‘;

if (count($params) > 0) {
    $q = http_build_query($params);
    $q = 'index.php?' . $q;
}

return $q;

}

var_dump(url());
// string(0) „“

var_dump(url(array(‚page‘ => ‚articles‘, ‚id‘ => 245)));
// string(30) „index.php?page=articles&id=245“ [/php]

Sobald mod_rewrite oder eine vergleichbare Rewriting-Technologie verfügbar ist, bräuchte dann lediglich diese Funktion angepasst zu werden.

[php]function url(array $params = array())
{
$q = ‚‘;

if (array_key_exists('page', $params)) {
    $q .= '/' . urlencode($params['page']);
    unset($params['page']);
}

if (count($params) > 0) {

    if ($q !== '') {
        $q .= '?' . http_build_query($params);
    } else {
        $q = 'index.php?' . $q;
    }
}

return $q;

}

var_dump(url());
// string(0) „“

var_dump(url(array(‚page‘ => ‚articles‘, ‚id‘ => 245)));
// string(16) „/articles?id=245“ [/php]

Danke dir! Werde ich mir sicherlich etwas genauer anschauen!