Zur Navigation

Umleitung funktioniert nicht auf localhost [2]

11 Jörg Kruse

Hallo inliner,

die RewriteRule kann sich nur auf den Dateinamen beziehen, nicht auf den Query String:

RewriteEngine On
RewriteBase /pola/content/

RewriteRule ^index.php?cpi=1.1$ ueber-mich.php [L]

Dieser muss stattdessen extra in einer RewriteCond ausgewertet werden:

RewriteEngine On
RewriteBase /pola/content/

RewriteCond %{QUERY_STRING} cpi=1.1
RewriteRule ^index.php$ ueber-mich.php [L]

Dann sollte bei Aufruf von /pola/index.php?cpi=1.1 der Inhalt von /ueber-mich.php ausgegeben werden

PS: Ich frage mich allerdings, ob das wirklich der Zweck der Rule sein soll oder ob nicht umgekehrt bei Aufruf von /ueber-mich.php der Inhalt von /pola/index.php?cpi=1.1 angezeigt werden soll? Das wäre dann so zu bewerkstelligen:

RewriteEngine On
RewriteBase /pola/content/

RewriteRule ^ueber-mich.php$ index.php?cpi=1.1 [L]

14.10.2007 21:35 | geändert: 14.10.2007 21:36

12 inliner

Vielleicht habe ich mich bisher bei meinen Fragen unglücklich ausgedrückt.

Diese Aktion dient dem Suchmaschinenmarketing.

Ich möchte erreichen, dass statt der Seite index.php?cpi=1.1 ein Name der Seite auftaucht, den Suchmaschinen verstehen. In diesem speziellen Fall also im Browser http://www.meineseite/über_mich.php stehen

Und das möchte ich für alle 72 Seiten machen, die bei der Homepage hinterlegt sind.

Habe ich da jetzt den falschen Ansatz gewählt?

Wenn ich Dein Beispiel mit
RewriteCond %{QUERY_STRING} cpi=1.1
RewriteRule ^index.php$ ueber-mich.php [L]

verwende, erhalte ich nur den nackten Text der Seite ausgegeben.

Soll ich für dieses Thema mal einen neuen Thread anfangen?

14.10.2007 22:05 | geändert: 14.10.2007 22:09

13 Jörg Kruse

Vielleicht habe ich mich bisher bei meinen Fragen unglücklich ausgedrückt.

Naja, das Thema ist wohl auch anfällig für Missverständnisse. Ich hatte deswegen auch schon mal diesen Artikel zum besseren Verständnis der Begrifflichkeit und der Möglichkeiten von Modrewrite geschrieben:

http://notizen.joergkrusesweb.de/n-2007-6/umleitung-weiterleitung-umschreibung.html

Ich möchte erreichen, dass statt der Seite /über_mich.php ein Name der Seite auftaucht, den Suchmaschinen verstehen. In diesem speziellen Fall also im Browser http://www.meineseite/über_mich.php stehen

In dem Fall musst du /ueber_mich.php statt index.php?cpi=1.1 verlinken und die von mir zuletzt beschriebene Rule anwenden:

RewriteEngine On
RewriteBase /pola/content/

RewriteRule ^ueber-mich.php$ index.php?cpi=1.1 [L]

Edit: deine obige Ausage ist leider auch nicht ganz verständlich, vielleicht habe ich dich auch wieder missverstanden:

Ich möchte erreichen, dass statt der Seite /über_mich.php ein Name der Seite auftaucht, den Suchmaschinen verstehen. In diesem speziellen Fall also im Browser http://www.meineseite/über_mich.php stehen

Was soll aufgerufen werden, was in der Adresszeile angezeigt und was als Inhalt angezeigt werden?

14.10.2007 22:25 | geändert: 14.10.2007 22:32

14 inliner

Da muss der Ersteller der Seiten noch irgendwo etwas anderes eingebaut haben.

Wenn ich z.B. eine Seite aufrufe, die gar nicht existiert, z.b. xxxxxx/index.php?cpi=9.1

Dann lande ich immmer auf der "Home"-Seite.

Ich habe jetzt folgendes in der .htaccess
RewriteEngine On
RewriteBase /pola/content/

RewriteCond %{QUERY_STRING} cpi=1.1
RewriteRule ^index.php$ ueber_mich.php [L]

RewriteRule ^ueber_mich.php$ index.php?cpi=1.1 [L]

Klicke ich jetzt den Link in der Navigtation der Seite "über mich" an, wird die Seite "nackt" ausgegeben, d.h. es wird nur der Inhalt der ueber_mich.php ausgegeben, die im Directory /pola/content/ liegt. Und der alte URL-Name ist immer noch zu sehen.

14.10.2007 22:38

15 Jörg Kruse

Da muss der Ersteller der Seiten noch irgendwo etwas anderes eingebaut haben.

Wenn ich z.B. eine Seite aufrufe, die gar nicht existiert, z.b. xxxxxx/index.php?cpi=9.1

Dann lande ich immmer auf der "Home"-Seite.

Ändert sich dabei auch die URL?

In der .htaccess solltest du nur eine der beiden Rules verwenden, je nachdem welche URL du umschreiben möchtest.

Also entweder:
RewriteCond %{QUERY_STRING} cpi=1.1
RewriteRule ^index.php$ ueber_mich.php [L]
... oder:
RewriteRule ^ueber_mich.php$ index.php?cpi=1.1 [L]

Klicke ich jetzt den Link in der Navigtation der Seite "über mich" an, wird die Seite "nackt" ausgegeben, d.h. es wird nur der Inhalt der ueber_mich.php ausgegeben, die im Directory /pola/content/ liegt. Und der alte URL-Name ist immer noch zu sehen.

Damit die URL sich ändert, must du auch den Link ändern. Modrewrite sorgt nur für die interne Rückumwandlung, damit der passende Inhalt ausgegeben wird.

14.10.2007 23:08

16 inliner

Ändert sich dabei auch die URL?

Nein, die URL ändert sich nicht. Wenn ich die (nicht existierende) /index.php?cpi=10.1 aufrufe, erscheint die "Home" und der eingegebene Link wird angezeigt (in dem Fall also die /index.php?cpi=10.1).

ich habe in der .htaccess jetzt folgendes stehen:
RewriteEngine On
RewriteBase /pola/content/

RewriteRule ^ueber_mich.php$ index.php?cpi=1.1 [L]

Zur Änderung des Links:

In dem Directory /pola/navi/ habe ich die ganzen Navigationsdateien liegen.

Also habe ich die home.php in diesem Verzeichnis folgendermaßen für diesen Menüpunkt geändert:
		<li><a id="sub_item1" href="ueber_mich.php">Über mich</a></li>
		<li><a id="sub_item2" href="index.php?cpi=1.2">Meine Praxis</a></li>

Das Funktioniert leider nicht.

Bewege ich den Mauszeiger auf den Menüpunkt "Über mich" wir lediglich folgender Link angezeigt:
http://www.podologie-lauer.de/pola/ueber_mich.php
Da fehlt noch das SubDirektory /content/

Habe ich den Eintrag in der navi-datei "home.php etwa falsch gemacht?

14.10.2007 23:26

17 Jörg Kruse

Nein, die URL ändert sich nicht. Wenn ich die (nicht existierende) /index.php?cpi=10.1 aufrufe, erscheint die "Home" und der eingegebene Link wird angezeigt (in dem Fall also die /index.php?cpi=10.1).

Naja, das scheint mir eine normales Verhalten. Wenn in der Datenbank kein Eintrag zu 10.1 steht, dann wird die Homepage angezeigt. Besser wäre es wohl, wenn eine 404 Fehlermeldung ausgegeen wird. Aber so etwas kann nur das Script abfangen

Das Verzeichnis /content würde ich so im href Attribut einbauen:

<li><a id="sub_item1" href="content/ueber_mich.php">Über mich</a></li>

14.10.2007 23:38

18 inliner

Das funktioniert mit dem Eintrag in der Navi-Datei.

Leider wird aber nur der Inhalt der ueber_mich.php angezeigt. Es fehlt alles andere von der Seite, alles die Grafik oben, die Menüs, einfach alles.

Außerdem wird die tatsächliche Subdirectory-Struktur angezeigt. also
/pola/content/ueber_mich.php.

Und /pola/content wollte ich ja auch aus dem Link raus haben.

Da muss ich wohl noch irgend wo einen Eintrag machen?

14.10.2007 23:43 | geändert: 14.10.2007 23:45

19 Jörg Kruse

Ich hab mir die Seite jetzt mal live angesehen (ich hatte die URL vorher nicht) - das schaut mir nach einer Include-Datei aus. So kann das natürlich nicht funktioneiren :)

Probier mal folgendes

1. Verlinkung:

<li><a id="sub_item1" href="ueber_mich.php">Über mich</a></li>
... d.h. auf http://www.podologie-lauer.de/pola/ueber_mich.php (ohne /content)

und 2. folgendes in der .htaccess im Verzeichnis /pola:

RewriteEngine On
RewriteBase /pola/

RewriteRule ^ueber_mich.php$ index.php?cpi=1.1 [L]

D.h. auch hier ohne /content

14.10.2007 23:50

20 inliner

Das funktioniert ! ! !

Danke für Deine Geduld.

Schaffe ich (eher besser Du) es denn auch noch, das /pola aus der Linkanzeige raus zu bekommen?

14.10.2007 23:56