Seite 1 von 2

Dynamische URLS

Verfasst: 28.01.2011, 23:18
von noob0815
Hallo erst mal,
leider habe ich ein kleines Problem mit dem Aufbau meiner Seiten.
Der Aufbau sieht wie folgt aus:
https://www.domin.tld/index.php?dBatr=161&id=123

Allerdings kann man nach dem = eine Zahlen kombi eingeben wie man lustig ist wie zum Bespiel 123321_ so dass die Seiten URL dann so ausschaut:
https://www.domin.tld/index.php?dBatr=123321_161&id=123

Die eigentliche Seite wird richtig angezeigt doch für die Sumas ist das nicht so toll. Bei Googel wird mir da auch DC angezeigt. Irgendwie müssen die Crawler die Seiten auch so eingelesen haben.

Nun zur Frage, gibt es eine Möglichkeit über die .htaccess mit dem RewriteCond und der RewriteRule dieses zu umgehen?

Ich meine man kann ja nicht alle Möglichkeiten durchgehen und separat umleiten.

Verfasst:
von
Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Verfasst: 29.01.2011, 00:10
von bugscout
Hi,

die Frage sollte doch eher lauten, woher kennt Google die 123321_161

Die probieren ja nicht alle Möglichkeiten aus.

Du kannst natürlich alle existierenden dBatr freischalten und die anderen sperren, aber woher soll deine .htaccess wissen wohin die Reise gehen soll,
wenn alles mögliche funktioniert wie 161_123 oder 123_161
oder sogar bratkartoffel_161

Da hilft vielleicht ein CMS-Wechsel (vergiss Joomla, die haben das auch)

Grüsse

Verfasst: 29.01.2011, 00:13
von Hirnhamster
ich pass das manuell über PHP an:
1. ermitteln wie die url lauten müsste
2. tatsächliche url vergleichen
3. bei ungleicheit: redirect zur "richtigen" url

Verfasst:
von

Verfasst: 29.01.2011, 00:28
von noob0815
Woher Googel die 123321_161 kennt?
Ehrlich gesagt, keine Ahnung doch wurde die so gelistet.

Ich dachte ehr an sowas in der Art:
RewriteCond %{THE_REQUEST} " /index\.php?dBatr=123321_161&id=123 "
RewriteRule ^index\.php$ https://www.domin.tld/index.php?dBatr=161&id=123 [R=301,L]

So das hier noch eine zusätzliche Anweisung eingefügt wird so dass alle Aufrufe von 1 bis zum Beispiel 999 direkt und automatisch an die eigentliche Ziel URL geleitet werden.

Allerdings habe ich keine Ahnung wie ich das realisieren kann.

Und das ganze per PHP umzusetzen mag die bessere oder auch saubere Lösung sein allerdings habe ich von PHP noch weniger Ahnung.

Verfasst: 29.01.2011, 01:04
von Cycroft
Servus.

Also ganz ehrlich: Ich weiß nicht was für ein bescheidenes CMS System du hast, aber wenn das Teil kein Modul oder eine eingebaute SEO Url Funktion hat: Dann schmeiß es weg! ;-)

Persönlich bin ich ein Fan von Joomla oder Wordpress. Kostet nix und jeder kann es bedienen. Du kannst die Urls auch perfekt so einstellen wie Du es haben willst. Ohne viel tara...

Wenn Du aus irgendwelchen Gründen doch gezungen bist bei Deinem CMS zu bleiben dann nutzt den Canonical Tag:

<link rel=”canonical” href=”https://www.domin.tld/index.php?dBatr=123321_161&id=123” />

Damit sagst Du Google, dass das die Hauptseite ist und der Rest Müll. Ist zwar nur behelfsmässig, aber besser so als gar nichts zu machen.

vg
Chris

Verfasst: 29.01.2011, 01:08
von noob0815
Wegschmeißen werde ich Garnichts!
Meine Frage ist wie ich das mit Hilfe der .htaccess lösen kann und nicht welches CMS ich nutzen soll.

Verfasst: 29.01.2011, 01:45
von 800XE
noob0815 hat geschrieben:Wegschmeißen werde ich Garnichts!
Meine Frage ist wie ich das mit Hilfe der .htaccess lösen kann und nicht welches CMS ich nutzen soll.
via htaccess kannst Du garnix machen
( entscheiden welche URL korrekt ist und welche nicht )

htaccess generiert keine Seiten (aus SQL oder so)
htaccess hat keinen Plan welche URLs wirklich existieren und welche nicht

woru gibt es "dBatr=" überhaupt?
wie Hirnhamster schon sagte ....
.... via PHP vergleichen

Du liest via "&id=123" Die Daten aus SQL, Ergebniss in $line[]

baust dir dann einfach die URL zusammen (wie sie seinsollte)
$url= $_SERVER['HTTP_HOST'] .'/index.php?dBatr=' . $line['dBatr'] .'&id=' . $line['id']

if ( strcmp($_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] , $url ) ) make301($url);

Verfasst: 29.01.2011, 05:55
von bugscout
noob0815 hat geschrieben:Wegschmeißen werde ich Garnichts!
Meine Frage ist wie ich das mit Hilfe der .htaccess lösen kann und nicht welches CMS ich nutzen soll.
Hallo

wenn dein System solche falschen URLs selber generiert und Google zum Spidern anbietet, ist es wenig hilfreich hinterherzulaufen und das zu ändern.

Wenn dBatr z.B. die Kategorie und id die Artikelnummer ist und dein System egal welches dBatr immer den Artikel anzeigt, kannst du nie deine Artikel verschieben, weil der Datenkrake sowas nie von allein vergisst.

Dann trennt man sich lieber beizeiten.

Du kannst natürlich jemanden beauftragen, der das ändert im PHP, dann aber Sicherheitsupdate ade.

Ich fahre noch ein Mambo 4.5.1, da hab ich alle Sicherheitsupdates von Hand eingebauen dürfen, weil ich vorher einiges daran geändert hab.

und laufend kommt irgendwas dazu wie zum Beispiel

RewriteCond %{QUERY_STRING} .*iframe=true.* [OR]

weil irgendso ein Contentgrabber das an meine URL ranhängt und mir meine Serps versaut und das System damit nicht umgehen kann.

wenn sowas auch geht

https://www.domin.tld/index.php?dBatr=1 ... in_auch_da

dann schmeiss es weg und zwar bevor die ersten 1000 Arbeitstunden drin stecken. Nachher wird es nur noch schwerer.

Grüsse

Verfasst: 29.01.2011, 13:04
von noob0815
htaccess generiert keine Seiten (aus SQL oder so)
Das ist mir auch klar doch muss die . htaccess ja auch gar keine Seiten generieren!

Wenn man dieses angibt:
RewriteCond %{THE_REQUEST} " /index\.php\?dBatr=123321_161&id=123 "
RewriteRule ^index\.php$ https://www.domin.tld/index.php?dBatr=161&id=123 [R=301,L]

Wird die https://www.domin.tld/index.php?dBatr=123321_161&id=123 nach https://www.domin.tld/index.php?dBatr=161&id=123 weitergeleitet.

Wenn man nun nach dBatr= eine weitere Abfrage einsetzt das zahlen und Buchstaben welche mit dem Unterstrich versehen sind ignoriert und zu der angegebenen Seite weitergeleitet werden muss nichts generiert werden.

Doch wie man dieses umsetzt ist das eigentliche Problem vor dem ich aktuell sitze und das war auch meine Frage.

Verfasst: 29.01.2011, 18:55
von 800XE
noob0815 hat geschrieben:Doch wie man dieses umsetzt ist das eigentliche Problem vor dem ich aktuell sitze und das war auch meine Frage.
ist doch ganz einfach ......
.... einfach alle URLs die "passieren können" in die htaccess reinschreiben

inkl solcher Dinge wie bugscout sagt
&contentgrabber=ich_bin_auch_da


das "einfache" an dem Einfachen
wissen welche URLs es gibt und nicht geben soll, jetzt und in Zukunft

Ist diese Aufgabe umsetzbar?
(A) Nein, weil Du "Jetzt" nicht weisst welche URLs alle reinsollen
(B) Nein, weil die htaccess vielleicht 10x so groß wird wie alles Andere zusammen

Verfasst: 30.01.2011, 00:20
von noob0815
@800XE, ich werde nicht mit dir diskutieren da du es eh nicht verstehst!

Verfasst: 30.01.2011, 11:12
von Synonym
Also verstanden habe ich es schon, aber aktuell keine Lösung, bin wo anders beschäftigt.

Was Du suchst ist etwas, das alles an ID sowieso weiterleitet, wenn davor etwas anderes mit einem Unterstrich steht. Das ist technisch möglich, nur wie gesagt, gerade keine Zeit.

Aber eine Gegenfrage.

Aktuell ist es ja als Trenner ein Unterstrich. Muss das sein? Was passiert wenn da ein anderes Zeichen ist, z.b "123321-161" oder "123321161" oder "123321b161"?
Wenn das auch geht, dann kannst Du die htaccess vergessen, aber das hat "bugscout" eigentlich so auch schon gesagt.

Verfasst: 30.01.2011, 14:55
von 800XE
noob0815 hat geschrieben:@800XE, ich werde nicht mit dir diskutieren da du es eh nicht verstehst!
Du machst mich lustig :lol:

Verfasst: 30.01.2011, 15:48
von chris21
Also ganz ehrlich, ob Deines Auftretens in diesem Thread bin ich eigentlich nicht gewillt, Dir zu helfen, noob0815.

Nun liegt Deine Gereiztheit vll. daran, dass mod_rewrite einem gelegentlich echt die Haare ausreißen kann.

Also doch eine Antwort, zwar ungetestet, aber sollte Dir die Richtung aufzeigen, falls es noch nicht direkt funzt:

Code: Alles auswählen

RewriteCond %&#123;QUERY_STRING&#125; ^dBatr=&#40;&#91;0-9&#93;+&#41;_&#40;&#91;0-9&#93;+&#41;&id=&#40;&#91;0-9&#93;+&#41;&#40;.*&#41;$
RewriteRule ^index\.php$ http&#58;//www.domin.tld/index.php?dBatr=%2&id=%3 &#91;R=301,L&#93; 


Verfasst: 30.01.2011, 19:48
von Bluemarble
Kann das nicht zu einer Endlosschleife führen?