• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

mod_rewrite - URL umschreiben + umleiten

rapid10

Mitglied
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
Code:
<a href="index.php?site=profile" [...]
Ich hätte jetzt gerne, damit ich nicht alles umschreiben muss, dass das automatisch geschieht. Also zu
Code:
<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!
 
Werbung:
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.
 
Werbung:
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:

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

würde so einen Link generieren

Code:
<a href="linkziel.endung">

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

Code:
<a href="/linkziel/endung">
 
Ich habe dazu kürzlich einen etwas verunglückten Artikel(anfang) verfasst (bedarf dringend der Erweiterung).

- Seiteninterne Links und Ausgaben-Escaping: Bitte abstrahieren Sie!

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"

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"
 
Werbung:
Zurück
Oben