Zur Navigation

link weiterleitung

1 _-lupin-_ (Gast)

Hallo,

ich hoffe Ihr könnt mir helfen (sonst wäre ich ja nicht hier) ?


also zu meinem Problem bzw. verständniss Problem:

ich habe eine Url:

www.domain.de/index.php?link=1

ich hätte aber gerne eine Link-Url:

www.domain.de/startseite.html

Jetzt meine Fragen:

Da die Verlinkung ( also das was im a Tag unter href="" steht) dynamisch erstellt wird mit einer ID aus einer DB, wie soll daraus eine startseite.html werden?

Oder wird die Verlinkung ( also das was im a Tag unter href="" steht) im Quelltext nicht angerührt, was ich aber dann komisch finden würde, weil ja der Link dann nicht so: www.domain.de/startseite.html aussehen würde, oder wird der Link im Quelltext auch automatisch überschrieben?

Ich wäre Euch sehr dankbar wenn Ihr mir beim Verstehen bzw. einer Lösung helfen könntet (es geht mir vorallem um das verständniss, da ich mir nicht erklären kann wie aus index.php?link=1 im Quelltext ein startseite.html Link werden soll da die ?link-ID ja aus einer DB kommt).


Ich danke Euch
LG

01.09.2011 01:50

2 Jörg Kruse

ich habe eine Url:

www.domain.de/index.php?link=1

ich hätte aber gerne eine Link-Url:

www.domain.de/startseite.html

Du willst die URL also nicht weiterleiten, sondern umschreiben.

Ein Umschreiben von URLs mithilfe vom mod_rewrite geschieht in zwei Schritten:

1. die Links in den HTML-Codes werden auf die gewünschten URLs abgeändert

2. passende mod_rewrite Rules sorgen dafür, dass diese virtuellen URLs serverintern wieder auf die originalen URLs rückübersetzt werden

01.09.2011 13:27

3 _-Lupin-_ (Gast)

Hi,
danke, ok das habe ich verstanden (klingt logisch). also geschieht alles in der .htaccess datei. und alle links die dynamisch in meinem php script erzeugt werden, werden also quasi nachbearbeitet.

was müsste dann für das obrige beispiel in der htaccess datei stehen? könntest du mir da bitte ein beispiel zeigen?

danke dir

LG

02.09.2011 17:00

4 Jörg Kruse

RewriteEngine on
RewriteRule ^startseite\.html$ index.php?link=1

02.09.2011 18:09

5 _-lupin-_ (Gast)

hi,

danke dir jörg.

aber, verstehe ich das richtig, das folgendes:

RewriteRule ^startseite\.html$ index.php?link=1

den link: startseite.html in: www.domain.de/index.php?link=1 umwandelt?

wenn das so ist, habe ich aber trotzdem noch das problem das "www.domain.de/index.php?link=1" davon die zahl 1 dynamisch ist weil der user den link selber anlegen kann bzw. ich weiß nicht wieviel es sind bzw welche IDs vergeben wurden (macht ja mysql selbst und richtet sich ja auch nach der anzahl der aktiven und inaktiven menülinks).

ich bräuchte einen weg genau diesen dynamischen link (also: www.domain.de/index.php?link=1 in zB startseite.html oder zB testlink.html) in den jeweilgen namenslink (also mysql hat eine spalte id und eine spalte name für den link) umzuschreiben.

LG

03.09.2011 02:21

6 Jörg Kruse

aber, verstehe ich das richtig, das folgendes:

RewriteRule ^startseite\.html$ index.php?link=1

den link: startseite.html in: www.domain.de/index.php?link=1 umwandelt?

Genauer gesagt handelt es sich hier um eine Rück-Umwandlung, die es dir ermöglicht, startseite.html statt index.php?link=1 zu verlinken

wenn das so ist, habe ich aber trotzdem noch das problem das "www.domain.de/index.php?link=1" davon die zahl 1 dynamisch ist weil der user den link selber anlegen kann bzw. ich weiß nicht wieviel es sind bzw welche IDs vergeben wurden (macht ja mysql selbst und richtet sich ja auch nach der anzahl der aktiven und inaktiven menülinks).

ich bräuchte einen weg genau diesen dynamischen link (also: www.domain.de/index.php?link=1 in zB startseite.html oder zB testlink.html) in den jeweilgen namenslink (also mysql hat eine spalte id und eine spalte name für den link) umzuschreiben.

Du kannst auch reguläre Ausdrücke verwenden:

RewriteRule ^(.+)\.html$ index.php?link=$1

$_GET['link'] enthält dann nicht mehr die ID, sondern den Namen. Entsprechend musst du die betreffenden Datenbank-Queries deines CMS anpassen und solltest auch dafür sorgen, dass das Datenfeld `name` unique ist

03.09.2011 08:21 | geändert: 03.09.2011 08:22

7 _-lupin-_ (Gast)

hi du, danke dir.

also soll ich den linknamen als verlinkunge nehmen und mit diesem dann in der DB nach dem entsprechenden Datensatz suchen?

meinst das?


LG

05.09.2011 01:20

8 Jörg Kruse

Ja, das eine bedingt ja das andere. Wenn du nur den Namen übermittelst, kann das Script natürlich auch nur diesen in seinen Datenbankabfragen verwenden.

In den URLs dieses Forums sind sowohl ID als auch Titel in der URL enthalten. So kann weiterhin die ID in den Datenbankabfragen verwendet werden und das Datenfeld für den Titel muss nicht unique sein.

05.09.2011 08:34

9 _-lupin-_ (Gast)

danke dir.

hab ich soweit verstanden.

ich würde es dann gerne so machen:

statt: index.php?link=1
so: 1/startseite.html

wobei die zahl dann die ID ist.

kannst du diese form so auch empfehlen oder sollte man es lieber so machen:
startseite-1.html

was wäre besser und könntest du mir den htaccess eintrag posten?


vielen dank

06.09.2011 17:28

10 Jörg Kruse

Wenn du einen Slash in die URL einbaust, musst du bei der relativen Verlinkung oder Einbindung von Grafiken und anderen Dateien gegebenenfalls noch href und src Attribute anpassen, weil sich dadurch der Pfad ändert. Bei der zweiten Variante wäre das nicht notwendig.

Die RewriteRule könnte dann so ausschauen:

RewriteRule ^(.+)-([0-9]+)\.html$ index.php?link=$2

$2 nimmt hier den zweiten geklammertern Ausdruck auf, der erste wird einfach fallengelassen

06.09.2011 21:57 | geändert: 06.09.2011 21:58