Sie sind nicht angemeldet.

1

Dienstag, 16. März 2010, 11:39

3.9.2 SEO-Links / Mod Rewrite URL Bug

Hallo zusammen,

ich muss leider mit Schrecken feststellen, dass sich Verhalten der Interpretation der SEO-URLs sehr nachteilg verändert hat:

Reichte es bei 3.9.0 aus, wenn die URL http://meincms.de/18.irgendeintext oder http://meincms.de/18.was-anderes hiess, um ein und dieselbe Seite aufzurufen, so muss nur der Text nach der Zahl gleich bleiben. D.h. bei Umbenennung der Seite ändert sich der Text nach der Zahl und alte Links funktionieren nicht mehr, was für mich ein erhebliches Problem darstellt.

Konfiguriert habe ich das Schema http://meincms.de/seite/

Gruß
Stefan

Werbung

cms2day

Profi

  • »cms2day« ist männlich

Beiträge: 1 282

CMS Version: 4.x/5.x

Beruf: Webentwickler

Paypal:

  • Nachricht senden

2

Dienstag, 16. März 2010, 11:41

Das ist kein Fehler - das gehört sich so!?
Ich verstehe nicht wie Du nun darauf kommst, das sei ein Fehler...?

Werbung

3

Dienstag, 16. März 2010, 11:55

Vielleicht nicht korrek rübergekommen:

Wir haben den Zahlenteil vor dem Punkt und Textteil nach dem Punkt, daraus besteht die SEO-URL, soweit ok.

Bei einem Artikel bleibt die Zahl ja immer gleich und der Textteil wird aus der Überschrift des Titeles gebildet. Ändert man nun die Überschrift, so ändert sich der Textteil, auch das ist ok.

Zuvor war es bei der Interpretation der SEO-URL aber egal, welcher Text der Zahl folgte, solange sich die Zahl nicht geändert hat, konnte die URL aufgerufen werden, auch wenn sich die Seitenüberschrift und damit der Textteil mittlweiele geändert hat.
Jetzt führen aber URLs mit "falschem" Textteil zur "Seite nicht gefunden" Meldung, was vorher nicht der Fall war. D.h. jede Menge "alte Links" führen nun ins Leere, ich wünsche mir das alte Verhalten zurück, denn der Parser beachtet nun irgendwie mehr als nur die Zahl.

Jetzt klar, was ich meine?

Danke
Stefan

Werbung

cms2day

Profi

  • »cms2day« ist männlich

Beiträge: 1 282

CMS Version: 4.x/5.x

Beruf: Webentwickler

Paypal:

  • Nachricht senden

4

Dienstag, 16. März 2010, 12:00

Mir ist schon klar, was du meinst. Jedoch wurde das mehrfach intern im Team diskutiert, und wir haben uns dazu entschlossen, das genau so umzusetzen wie es nun ist. Gründe dafür gibt es viele, unter anderem kannst Du es auch als Schutzmaßnahme gegen Bots sehen. Die Seiten liesen sich ohne Abfrage nach dem Punkt (.) so schneller spidern, was nun nicht mehr passieren kann. Also zum ersten schonmal ne Vorsichtsmaßnahme. Zum anderen kann es sein, dass Du mal eine Seite 20.informationen anlegst. So, nach 3 Monaten oder einem Jahr, änderst Du alle Seiten, und dann steht plötzlich die ID 20 nicht mehr für die alte Seite, sondern für kontakt. Eventuell durch Neuinstallation oder so. Nun überleg Dir mal, was dabei rum kommt.

Das wird auf jeden Fall so bleiben.
Du kannst es Dir beliebig modifizieren wenn Du das möchtest, ich sag dir auch gerne wie, aber ich rate Dir davon ab.

Werbung

5

Dienstag, 16. März 2010, 12:14

Ich fürchte nur, dass ich nicht der einzige bin, der ein grosses Problem damit hat. Ich finde es auch schade, dass dies nicht kommuniziert wurde.

Gerne komme ich auf das Angebot zurück dass Du mir mitteilst, wo ich schrauben muss, um das alte Verhalten wieder herzustellen, Danke :-)

Vielleicht könnte man dies ja auch in einer zukünftigen Version dem User überlassen, sprich konfigurierbar machen. Das Problem mit dem Spidern sehe ich nicht als solches, das hast Du bei jeder Software, die nur mit IDs arbeitet ...

Gruß
Stefan

Werbung

cms2day

Profi

  • »cms2day« ist männlich

Beiträge: 1 282

CMS Version: 4.x/5.x

Beruf: Webentwickler

Paypal:

  • Nachricht senden

6

Dienstag, 16. März 2010, 12:19

includes/config.inc.php
Datei Version 3.9.1/0 | 12.03.2010

Zeile 596:

PHP-Quelltext

1
$pages mysql_fetch_assoc(mysql_query("SELECT * FROM pages WHERE id='".mysql_real_escape_string($explode['0'])."' AND page='".mysql_real_escape_string($explode['1'])."' LIMIT 1"));
ändern in

PHP-Quelltext

1
$pages mysql_fetch_assoc(mysql_query("SELECT * FROM pages WHERE id='".mysql_real_escape_string($explode['0'])."' LIMIT 1"));

Zeile 693:

PHP-Quelltext

1
$pages mysql_fetch_assoc(mysql_query("SELECT * FROM pages WHERE id='".mysql_real_escape_string($explode['0'])."' AND page='".mysql_real_escape_string($explode['1'])."' LIMIT 1"));
ändern in

PHP-Quelltext

1
$pages mysql_fetch_assoc(mysql_query("SELECT * FROM pages WHERE id='".mysql_real_escape_string($explode['0'])."' LIMIT 1"));


Try it, habs nun selber nicht getestet, aber sollte klappen!

:thumbup:

Werbung

emet

Admin & Support

  • »emet« ist männlich

Beiträge: 2 530

Wohnort: Rhein/Main

Paypal:

  • Nachricht senden

7

Dienstag, 16. März 2010, 12:28

Das wurde so beschlossen, wie Matze es erklärt hat, weil nur dies die optimale Lösung darstellt.
.
HTML, was ist das? Ein neues Männermagazin? Css.., was es so alles gibt!

News: http://www.cms2day.de/news/1/
Features: http://www.cms2day.de/cms-funktionen/

Zufrieden mit cms2day und unserer Arbeit/Support - Spenden (-Button links) sind herzlich Willkommen - Dankeschön.
.

Werbung

8

Dienstag, 16. März 2010, 12:58

Ich hinterfrage ja garnicht mehr, warum dies so ist ;-)

Fakt ist aber, dass dies dem Thema SEO eigentlich entgegenwirkt, wenn nach reiner Überschriftenänderung in einem Artikel die URL nicht mehr funktioniert, die wahrscheinlich so auch zigfach in Suchmaschinen, Katalogen oder anderen WebSites hinterlegt ist ... und das musste einen in der Vergangenheit nicht kümmern, führt jetzt aber zu etlichen invaliden Links, und das sicherlich nicht nur bei mir.

Gruß
Stefan

Werbung

9

Dienstag, 16. März 2010, 13:03

includes/config.inc.php
Datei Version 3.9.1/0 | 12.03.2010

Zeile 596:

PHP-Quelltext

1
$pages mysql_fetch_assoc(mysql_query("SELECT * FROM pages WHERE id='".mysql_real_escape_string($explode['0'])."' AND page='".mysql_real_escape_string($explode['1'])."' LIMIT 1"));
ändern in

PHP-Quelltext

1
$pages mysql_fetch_assoc(mysql_query("SELECT * FROM pages WHERE id='".mysql_real_escape_string($explode['0'])."' LIMIT 1"));

Zeile 693:

PHP-Quelltext

1
$pages mysql_fetch_assoc(mysql_query("SELECT * FROM pages WHERE id='".mysql_real_escape_string($explode['0'])."' AND page='".mysql_real_escape_string($explode['1'])."' LIMIT 1"));
ändern in

PHP-Quelltext

1
$pages mysql_fetch_assoc(mysql_query("SELECT * FROM pages WHERE id='".mysql_real_escape_string($explode['0'])."' LIMIT 1"));


Try it, habs nun selber nicht getestet, aber sollte klappen!

:thumbup:
Klappt fast, die Seite wird angezeigt, aber der Text

"Error 404 - Seite nicht gefunden"

wird im Seitenkopf noch ausgegeben.

Gruß
Stefan

Werbung

10

Dienstag, 16. März 2010, 13:09

Mit Kopf meinte ich noch über dem Text, quasi als "Überschrift".

Hab's gefunden, Zeile 383:

alt:

PHP-Quelltext

1
$seitenabfrage mysql_fetch_assoc(mysql_query("SELECT * FROM pages WHERE id='".mysql_real_escape_string($explode['0'])."' AND page='".mysql_real_escape_string($explode['1'])."' LIMIT 1"));


neu:

PHP-Quelltext

1
$seitenabfrage mysql_fetch_assoc(mysql_query("SELECT * FROM pages WHERE id='".mysql_real_escape_string($explode['0'])."' LIMIT 1"));

Werbung