Die sauberen URLs des armen Mannes im Vergleich zu Mod_Rewrite

8

In der Firma, in der ich arbeite, bereiten wir uns darauf vor, eine neue Website zu entwerfen, und es gibt einige Meinungsverschiedenheiten darüber, wie saubere URLs erstellt werden sollen. Im vergangenen Jahr haben wir unsere bestehende Website in Erwartung einer umfassenden Neugestaltung, an der die Clean URLs ™ von Poor Man ™ beteiligt waren, geringfügig verbessert.

Beispiel:
http://www.example.com/products/widgets/index.php

http://www.example.com/products/sprockets/index.php

Für die neue Site wird über die Verwendung von mod_rewrite gesprochen:

  1. Der Benutzer fordert http://www.example.com/products/widgets/
  2. mod_rewrite sendet sie an http://www.example.com/index.php?page=products/widgets
  3. index.php sendet sie an die reale Seite http://www.example.com/products/widgets.php

Ich verstehe nicht, wie all dieses Rigamaroll einen Mehrwert bringt. Der Mitarbeiter zugunsten von mod_rewrite behauptet, dass weniger Verzeichnisse irgendwie einer einfacheren Wartung entsprechen.

Keine unserer vorhandenen Seiten verwendet Variablen in der Abfragezeichenfolge. Der gesamte Inhalt befindet sich in den eigentlichen Dateien. Wir planen, einige Inhalte in die Datenbank aufzunehmen, z. B. Pressemitteilungen und kommende Messen, an denen wir teilnehmen werden. Die überwiegende Mehrheit der Seiten wird jedoch nur PHP verwenden, um gängiges HTML wie Kopf-, Fuß- und Navigationselemente aufzunehmen. Ich wäre definitiv bereit, mod_rewrite für solche dynamischen Inhalte zu verwenden.

Gibt es einen großen Vorteil, den ich vermisse, dass wir mod_rewrite für alles verwenden sollten? Reichen die Clean URLs ™ von Poor Man ™ für die Nicht-Datenbank-Teile unserer Website aus?

Scott
quelle
Ich tougt so ... zu viel Ärger für eine saubere URL ...

Antworten:

3

Der oben beschriebene dreistufige Prozess scheint redundant und nutzlos zu sein, wie oben angegeben. Wenn index.php sie in Schritt 3 auf die "echte" Seite bringt, warum sollte man sich dann überhaupt mit mod_rewrite beschäftigen? Dadurch werden die Vorteile, die mod_rewrite bietet, zunichte gemacht. Eine suchmaschinenfreundliche URL und eine einfachere Wartung der Website. Wenn Sie bei Schritt 2 anhalten, profitieren Sie von mod_rewrite, indem Sie nur eine Seite warten müssen. Es kann jedoch eine praktisch unbegrenzte Anzahl von Seiten bereitstellen und für den Benutzer und die Suchmaschinen transparent sein, da sie nur die URL in Schritt 1 sehen.

John Conde
quelle
4

Es ist ein Mythos, dass "/ pagename" oder "/pagename.htm" für Suchmaschinen besser sind als "/pagename.php". Zumindest bei Google gibt es definitiv keine Grundlage dafür (und ich nehme auch die anderen an). In ähnlicher Weise muss auch "index.php? Page = Seitenname" nicht als "/ pagename" umgeschrieben werden - Suchmaschinen können diese URLs problemlos verstehen, und Google hat sogar festgestellt, dass Nutzer es vorziehen, nicht neu zu schreiben sie unnötig ( http://googlewebmastercentral.blogspot.com/2008/09/dynamic-urls-vs-static-urls.html ). Also , vorausgesetzt , Sie sind nicht endlos URLs mit URL - Parameter erstellen, neu geschrieben URLs sind nicht unbedingt mehr Suchmaschine freundlicher als nicht-umgeschrieben URLs .

Das heißt, Benutzer bevorzugen möglicherweise nette URLs gegenüber hässlichen / komplexen URLs. Wenn Ihre Hauptsorge darin besteht, dass die Suchergebnisse nette URLs enthalten, werfen Sie einen Blick auf das von Google jetzt unterstützte Breadcrumbs-Mikroformat ( http://googlewebmastercentral.blogspot.com/2010/09/rich-snippets-testing-tool- Verbesserungen.html ), da diese häufig eine noch bessere Benutzererfahrung in Bezug auf URLs in den Suchergebnissen bieten können. Dies wird das Problem der Benutzer nicht lösen, auf die gut aussehende URLs verlinken sollen. Vorausgesetzt, Ihre URLs sind nicht unendlich komplex (und Ihre Beispiele nicht), wird es wahrscheinlich keinen messbaren Unterschied machen, wenn Sie sie dafür neu schreiben Anwendungsfall. Wenn es keinen messbaren Unterschied gibt, ist es wahrscheinlich nicht sinnvoll, Zeit mit dem Entwerfen und Verwalten eines solchen Setups zu verbringen.

John Mueller
quelle
1

Was Sie als "Clean URLs des armen Mannes" bezeichnen, sind nur saubere URLs, die über das Dateisystem implementiert werden. Sie können diese URL-Typen mit mod_rewrite verwenden, genauso wie Sie den zweiten URL-Typ ohne mod_rewrite verwenden können.

Saubere URLs sind genau das, was der Name impliziert - URLs, die sauber sind oder sauber aussehen. Beide

http://yoursite/foo/bar

und

http://yoursite/foo/bar.php

sind saubere URLs. Der Begriff "saubere URLs" gibt keine bestimmte Implementierung an. Sie können saubere URLs implementieren, indem Sie bei jeder Aktualisierung der Site bei Bedarf zwischengespeicherte HTML-Seiten generieren. Mit mod_rewrite können Sie einfach die URL-Struktur von der Dateistruktur ohne Weiterleitungen oder Frames entkoppeln.

Wie es sich anhört, betreiben Sie derzeit keine datenbankgesteuerte Site. Und obwohl es sich technisch als dynamische Website qualifizieren könnte, liegt es wahrscheinlich eher am statischen Ende des Spektrums, wenn Sie hauptsächlich PHP verwenden, nur um Kopf- / Fußzeilen einzuschließen. Das ist in Ordnung für kleine Websites, die selten aktualisiert werden müssen. Wenn Ihre Website jedoch größer wird, müssen Sie ein echtes CMS implementieren.

Wo mod_rewrite glänzt, ist, wenn Sie anfangen, die Wartbarkeit zu berücksichtigen. Anstatt Hunderte von PHP-Dateien für jede Produktseite zu haben (mit viel redundantem Code), können Sie einfach ein einziges Skript verwenden, das alle Anforderungen verarbeitet. Wenn Sie jedoch keine Eins-zu-Eins-Zuordnung der tatsächlichen .php-Dateien zu den angezeigten Webseiten mehr haben, müssen Sie so etwas wie mod_rewrite verwenden, um die Seitenanforderungen intelligent weiterzuleiten, während die Illusion der Datei- / Verzeichnisstruktur erhalten bleibt Dort.

Es ist also nicht das zusätzliche Unterverzeichnis, über das Sie sich Sorgen machen sollten. Es ist die Tatsache, dass Sie für jede Seite Ihrer Site ein separates .php-Skript erstellen.

Lèse Majestät
quelle
1

"URLs bereinigen" bedeutet häufig, dass keine Datei ext. Es hilft dabei, Implementierungsdetails vor dem Viewer zu verbergen. Dies hat den Vorteil, dass Sie Ihre Website von PHP auf Ruby on Rails verschieben können, ohne eine einzige URL zu ändern.

Obwohl es jetzt möglich ist, Ihre Site mit ASP.net auszuführen und Dateinamen mit der Endung .php zu haben, wenn Sie Ihre URLs intakt halten möchten, erscheint es sinnvoller, sie so auszuführen, dass das Problem nie auftreten muss .

http://www.example.com/news/2010/10/our-new-url-system/

Kann immer eine gute URL sein, auch wenn Sie die zugrunde liegende Architektur vollständig ändern oder von statischen zu dynamischen Dateien wechseln. Oder umgekehrt.

Erik
quelle
0

Es scheint mir, als wäre es viel schneller und einfacher, all Ihre Inhalte in einer Datenbank zu haben, als jedes Mal, wenn Sie Aktualisierungen vornehmen müssen, ein großes Dateisystem zu durchsuchen. Wie John Mueller oben erwähnt hat, wird die nette URL keinen großen Unterschied in Ihren Rankings machen. Sie möchten jedoch Mod_Rewrite verwenden, um Ihre vorhandenen URLs und deren Wert beizubehalten. IE wenn:

example.com/widgets/index.php hat 1.000 Links, die darauf verweisen, und Sie ändern dies in example.com/pages/widgets.php. Sie riskieren, viel von diesem Wert zu verlieren (Sie können ihn natürlich umleiten, aber es ist fraglich, ob oder nicht, das wird den gleichen Wert übergeben)

Meine Empfehlung wäre, wenn Sie weiterhin statischen Inhalt bereitstellen und das Dateisystem weiterhin verwenden. Wenn Sie ihn in dynamischen Inhalt konvertieren, verwenden Sie Mod_Rewrite, um Ihre aktuelle URL-Struktur auf dem neuesten Stand zu halten. Wenn die aktuelle Struktur nicht beibehalten werden kann, erstellen Sie mit Mod_Rewrite eine Struktur, die für zukünftige Updates stabil ist.

Joshak
quelle
0

Wie gesagt, es ist wirklich wichtig , etwas zu haben .phpoder ?page=nicht. Was tut Sache ist , wenn Sie so etwas wie dies zu tun:

http://www.example.com/index.php?page=13

Hallo71
quelle