Seite 1 von 1

mod rewrite / htaccess

Verfasst: 05.05.2011, 14:08
von Billy04
Hallo zusammen

Ich habe wieder einmal ein Mod Rewrite Problem...

Folgende URL besteht:

www.meineseite.de/abc-def/a2345-begriff/

das abc-def ist dynamisch und wechselt je nach thema.

die Zahlen sind die ID und danach kommt der Begriff des Themas.

Ich möchte es jedoch verküzren und nur

www.meineseite.de/abc-def/begriff.html

Vielen Dank für eure Unterstützung.

Gruss Billy

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 05.05.2011, 15:46
von Hirnhamster
Wenn dein System mit IDs arbeitet, wird das nicht funktionieren, denn woher soll es denn dann die ID aus der URL extrahieren?

Verfasst: 06.05.2011, 06:58
von Billy04
ok, das bedeutet ich müsste den unique wert nicht auf die ID sondern auf das Wort setzen und das wiederum könnte dazu führen, dass falls 2 x das selbe wort in der DB vorhanden ist, DC geschaffen wird oder?

Was würdet ihr denn empfehlen?

Ist eine ID ind er URL seo technisch subotpimal?

wenn ich die ID beibehalten würde, welche URL wäre besser:

www.meineseite.de/abc-def/a2345-begriff/

oder

www.meineseite.de/abc-def/a/2345/begriff/

?

Verfasst: 06.05.2011, 07:19
von Synonym
Also DC wird das nicht geben, aber das System wird wohl nicht mehr fehlerfrei funktionieren.

ID kommt rein -> DB wird befragt -> kennt nur eine Antwort -> somit ist klar, was es ist
Begriff kommt rein -> DB wird befragt -> kennt nun eventuell mehrere Antworten -> welche ist nun die richtige? Keine Ahnung, das kann das System nicht mehr erkennen.

Einen unique Wert auf einen einzelnen Begriff zu legen ist auch nicht sonderlich gut, das geht nämlich meist nicht. Kommt aber auf die Größe der Seite an. Das musst Du wissen, ob der Begriff auch öfters vorkommen kann.

Aber, Dein Beispiel lässt auch nicht viel erkennen von außen. "/abc-def/" ist dynamisch, gut, aber was das ist, das weiß keiner - nur Du. "Begriff" ist ein einzelner Begriff. Wozu der gut ist, weißt auch nur Du.

Denkbar wäre daher für mich erst einmal auch eine Kombination aus "/abc-def/" + "Begriff" und das dann eben unique. Somit dürfte jeder Begriff auch nur einmal vorkommen, aber eben nur innerhalb das gleichen "/abc-def/".

"/damen-schuehe/rot/" und "/herren-schuhe/rot/" wäre somit möglich, da "rot" ja jeweils abhängig ist von dem Wert davor.

Oder eben umgekehrt als "/schuhe-rot/damen/" und "/schuhe-rot/herren/".

Somit muss also immer nur die Kombination unique sein und das kann man durchaus machen (wenn das System da denn auch mitspielt)... Machen meine Systeme alle so, obwohl dann intern dennoch mit IDs gearbeitet wird.

Im Prinzip braucht es dann zum Abruf nur ein vorgeschaltetes Script, das aus der Kombination eben die ID aus der Datenbank abruft. Dann geht es weiter wie vorher auch.

Verfasst: 06.05.2011, 08:35
von 800XE
Billy04 hat geschrieben:ok, das bedeutet ich müsste den unique wert nicht auf die ID sondern auf das Wort setzen und das wiederum könnte dazu führen, dass falls 2 x das selbe wort in der DB vorhanden ist, DC geschaffen wird oder?
ein UNIQUE ist ein UNIQUE
wenn er nicht UNIQUE ist ist er kein UNIQUE
Synonym hat geschrieben:Machen meine Systeme alle so, obwohl dann intern dennoch mit IDs gearbeitet wird.

Im Prinzip braucht es dann zum Abruf nur ein vorgeschaltetes Script, das aus der Kombination eben die ID aus der Datenbank abruft. Dann geht es weiter wie vorher auch.
normal

Code: Alles auswählen

$query   = "SELECT * FROM ......... ";
$query  .= " WHERE id ='$id' ";
$result  = mysql_query&#40;$query&#41; or die&#40;"<b>$query</b>&#58;<br> " . mysql_error&#40;&#41;&#41;;
if &#40; $line = mysql_fetch_array&#40;$result, MYSQL_ASSOC&#41; &#41;
&#123;
&#125;
dein Prinzip

Code: Alles auswählen

$query   = "SELECT * FROM ......... ";
$query  .= " WHERE keyword ='$keyword' ";
$result  = mysql_query&#40;$query&#41; or die&#40;"<b>$query</b>&#58;<br> " . mysql_error&#40;&#41;&#41;;
if &#40; $line = mysql_fetch_array&#40;$result, MYSQL_ASSOC&#41; &#41;
&#123;
  $query   = "SELECT * FROM ......... ";
  $query  .= " WHERE id ='$line&#91;id&#93;' ";
  $result  = mysql_query&#40;$query&#41; or die&#40;"<b>$query</b>&#58;<br> " . mysql_error&#40;&#41;&#41;;
  if &#40; $line = mysql_fetch_array&#40;$result, MYSQL_ASSOC&#41; &#41;
  &#123;
  &#125;
&#125;
Du selectest "im Prinzip" den selben Datensatz 2 mal

Verfasst: 06.05.2011, 10:12
von Synonym
@800XE

Also wenn man das so macht wie Du und nur eine Tabelle abgefragt wird, dann ja. Dann kann man auch gleich das Ergebnis verwenden und braucht keine extra Query.

Ich habe aber gut 80 Tabellen, bei denen nur in einer die "Wort-Kombis" ermittelt werden können. Also erst mal in der die ID abfragen und dann das Script weiterarbeiten lassen mit der dann intern ermittelten ID.

Also quasi ein SELECT id1, id2, id3, id4, typ, status FROM Tabelle WHERE x='abc-def' AND y='begriff'.

Die dann ermittelten ids und anderes Zeug wird dann von den anderen Queries benötigt. Und nein, ein Join über alle ist da nicht möglich bzw. nicht sinnvoll ;-) Ich ermittle einmal die IDs und Joine die Tabelle deswegen nicht jedes mal. :-)

Verfasst: 06.05.2011, 10:42
von 800XE
Synonym hat geschrieben:Ich habe aber gut 80 Tabellen, bei denen nur in einer die "Wort-Kombis" ermittelt werden können. Also erst mal in der die ID abfragen und dann das Script weiterarbeiten lassen mit der dann intern ermittelten ID.
Bei mir sind es auch mehrere Tabellen
800xe.de/update/was-neues.html
SELECT * FROM Domains WHERE DOmain=$domain AND TLD=$tld
... Ergebniss ist die "Did"
SELECT * FROM Path WHERE Did=$Did AND path=$path
... Ergebniss ist die "Pid"
SELECT * FROM Files WHERE Pid=$Pid AND file=$file
... Ergebniss .. unter anderem ... die $Fid

Diese 3 Tabellen liefern alle Infos ....
.... und es wäre ein Overhead diese "TabellenInfos" immer in allen datensetzen abzulöegen = alle 3 Tabellen in 1 Tabelle abzulegen


Bei Billy04
haben wir jetzt aber einen Wechsel der "UNIQUE"Spalte

Warum sollte ma da extra eine neue Tabelle vorschalten?

ohne htaccess könnte ich auch alles über
SELECT * FROM Domains WHERE Did=$_GET['Did']
SELECT * FROM Path WHERE Pid=$_GET['Pid']
SELECT * FROM Files WHERE Fid=$_GET['Fid']

genau das hat er jetzt quasie ...
... und er muß jetzt nur indextechnisch umbauen um eben über "String" abzufragen
Synonym hat geschrieben:Die dann ermittelten ids und anderes Zeug wird dann von den anderen Queries benötigt. Und nein, ein Join über alle ist da nicht möglich bzw. nicht sinnvoll ;-) Ich ermittle einmal die IDs und Joine die Tabelle deswegen nicht jedes mal. :-)
Join (ohne t)? ..... das ist mir zu Joint (mit t)

vielleicht wollte ich mit dem letzten Post den Angeber raushängen ....
.... bin aber alles Andere als ein SQL Profi ....
.... es ging nur um die Logik der notwendigen Notwendigkeit

Verfasst: 06.05.2011, 10:44
von 800XE
Erklärung
800XE hat geschrieben:
Synonym hat geschrieben:Und nein, ein Join über alle ist da nicht möglich bzw. nicht sinnvoll ;-)
Join (ohne t)? ..... das ist mir zu Joint (mit t)
Joint (mit t) makes high ..... = hoch .... = Join (ohne t) is me 2 hoch