Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Nochmal modrewrite...

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 07.07.2008, 18:57

Hallo liebe Leute,

das ist mir jetzt schon fast peinlich, aber ich bin eben kein
modrewrite-Experte und habe folgende Frage, von der ich hoffe,
das sie bzw. das Problem verstanden wird.

1. in einem Projekt werden auf allen Seiten per include ein
Formular zur Navigation eingebunden.
Alle Seite befinden sich hier
www.domain.de/dateiname.html

2. die Daten aus dem Formular werden an eine „Steuerscript“ gesendet,
welches aus 2 Variablen eine dynamische URL erstellt, auf die dann
per 301’er weitergeleitet wird. Eine solche URl sieht z.B. so aus
(die Daten „kunterbunt“ und „pferd“ kommen vom Formular)

Code: Alles auswählen

www.domain.de/kunterbunt/pferd.html
Das funktioniert auch ohne Fehler, die URL wird auch angezeigt.

In der .htaccess steht folgendes

Code: Alles auswählen

RewriteRule ^/([a-z]+)/([a-z]+)\.html$ /index.php?page=$2&lg=$1
Wie zu erkennen ist, wird hier an die index.php weitergeleitet.
Und nun kommt das Problem.
Nach der erfolgreichen Weiterleitung auf die dynamische URL,
erfolgt logischerweise beim erneutem absenden des Formulars ein Fehler,
weil ja die Regel in der .htaccess dafür sorgt, das eine URL
a là www.domain.de/kunterbunt/pferd.html auf die index.php umgeleitet werden soll.

Hat jemand das Problem verstanden? Oh man, ich glaube die Lösung ist hier
Einfacher als das Problem zu beschreiben.

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Burns
PostRank 5
PostRank 5
Beiträge: 296
Registriert: 10.06.2008, 18:54

Beitrag von Burns » 07.07.2008, 19:03

Hallo,

ich habe bei mir im Formular action="" angegeben,
dann wird das Formular an die gleiche Seite gesendet
Dann hat es erst bei mir funktioniert


RewriteEngine on

RewriteCond $2 !''
RewriteRule ^/(.*)/(.*).html$ index.php?page=$2&lg=$1 [L,QSA]
hilft das vieleicht ?
Zuletzt geändert von Burns am 07.07.2008, 19:17, insgesamt 2-mal geändert.

xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 07.07.2008, 19:14

Burns hat geschrieben:Hallo,

ich habe bei mir im Formular action="" angegeben,
dann wird das Formular an die gleiche Seite gesendet
Damit hat es erst bei mir funktioniert
Danke für den Tipp, ich werd das morgen gleich mal ausprobieren....

Anzeige von ABAKUS

von Anzeige von ABAKUS »

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

Jetzt anfragen: 0511 / 300325-0.


xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 08.07.2008, 09:55

@ Burns

RewriteEngine on

RewriteCond $2 !''
RewriteRule ^/(.*)/(.*).html$ index.php?page=$2&lg=$1 [L,QSA]
hilft das vieleicht ?

Nein, leider nicht, das Problem besteht immer noch.
Und ist ja eigentlich auch klar, weil das Absenden des Formulars
auch zur URL-Umschreibung in der .htaccess führt.
Ich find da einfach keine Lösung.

Burns
PostRank 5
PostRank 5
Beiträge: 296
Registriert: 10.06.2008, 18:54

Beitrag von Burns » 08.07.2008, 10:29

dann hätte ich nur noch folgenden Vorschlag

<form method="POST" action="<? echo $PHP_SELF; ?>" target="_top">

-

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 08.07.2008, 11:31

wollbay hat geschrieben:

Code: Alles auswählen

RewriteRule ^/&#40;&#91;a-z&#93;+&#41;/&#40;&#91;a-z&#93;+&#41;\.html$ /index.php?page=$2&lg=$1
[…]
Nach der erfolgreichen Weiterleitung auf die dynamische URL,
erfolgt logischerweise beim erneutem absenden des Formulars ein Fehler,
weil ja die Regel in der .htaccess dafür sorgt, das eine URL
a là www.domain.de/kunterbunt/pferd.html auf die index.php umgeleitet werden soll.
Warum kommt da "logischerweise" ein Fehler? Und was für ein Fehler, wird die Seite nicht gefunden, landest du in einer Endlosschleife, explodiert der Rechner? So logisch finde ich das alles nicht, jedenfalls sehe ich in deiner Darstellung bislang keinen Grund, allerdings hast du auch so ziemlich den kompletten ersten Teil der Verarbeitung, die Formularverwurstung unterschlagen.

An welche URL schickt das Formular seine Daten (action-Parameter)? Welchen Code hast du im verarbeitenden Skript? Und warum benutzt du zur Navigation ein Formular?

xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 08.07.2008, 12:11

Und was für ein Fehler, wird die Seite nicht gefunden?
Ja genau, die Seite wird nicht gefunden.
An welche URL schickt das Formular seine Daten (action-Parameter)?

Code: Alles auswählen

<form action="search.php" method="post">
Welchen Code hast du im verarbeitenden Skript?

Code: Alles auswählen

gekürzt....
$region = $_POST&#91;'region'&#93;;
$rubrik = $_POST&#91;'rubrik'&#93;;
Header &#40;'Location&#58;'.$region.'/'.$rubrik.'.html'&#41;;
exit&#40;&#41;;
Und warum benutzt du zur Navigation ein Formular?
Weil Einträge aus einer DB selectiert werden sollen. Und da gibt es
8 x 3 Möglichkeiten, also insgesamt 512. Ich halte es nicht für schlau,
eine herkömmliche Navigation mit 512 Links zu erstellen desshalb die
Variante mit dem Formular.
Zuletzt geändert von xoni am 08.07.2008, 13:01, insgesamt 1-mal geändert.

Burns
PostRank 5
PostRank 5
Beiträge: 296
Registriert: 10.06.2008, 18:54

Beitrag von Burns » 08.07.2008, 12:44

<form action="search.php>" method="post">

search.php>
Steht das wirklich so da oder nur ein Kopierfehler ?

xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 08.07.2008, 13:02

Burns hat geschrieben:<form action="search.php>" method="post">

search.php>
Steht das wirklich so da oder nur ein Kopierfehler ?
Ja, Kopierfehler, danke...

xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 08.07.2008, 13:04

wollbay hat geschrieben:
Burns hat geschrieben:<form action="search.php>" method="post">

search.php>
Steht das wirklich so da oder nur ein Kopierfehler ?
Ja, Kopierfehler, danke...
Fehler besteht immer noch....

Burns
PostRank 5
PostRank 5
Beiträge: 296
Registriert: 10.06.2008, 18:54

Beitrag von Burns » 08.07.2008, 13:09

weil ja die Regel in der .htaccess dafür sorgt, das eine URL
a là www.domain.de/kunterbunt/pferd.html auf die index.php umgeleitet werden soll.

diese Regel greift aber nicht bei URLs wie www.domain.de/search.php
Das Problem liegt da irgendwo anders
Ohne Link weiss ich da auch nicht weiter :(

xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 08.07.2008, 13:42

@ Burns
Ohne Link weiss ich da auch nicht weiter
Ich teste im moment local, ein Link kann ich Dir nicht geben.
Aber ich denke ich weiß wo das Problem liegt.


Wenn ich das Formular das 1. mal absende funktioniert es ja.
Das liegt daran, das die Datei von der das Formular abgesendet wird
im Root liegt z.B.
www.domain.de/blabla.html
Und ebenfalls dort befindet sich die Datei search.php

Nach der erfolgten Weiterleitung sieht die Url ja z.B. so aus
www.domain.de/blabla/blublub/datei.html
Da in dieser Url auch das Formluar per include eingebunden werden soll,
und dieses ja immer noch im Root liegt, kommt es zum Fehler.
Vielleicht hat da ja doch noch jemand eine Idee...

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 08.07.2008, 15:44

wollbay hat geschrieben:Wenn ich das Formular das 1. mal absende funktioniert es ja.
Das liegt daran, das die Datei von der das Formular abgesendet wird
im Root liegt z.B.
www.domain.de/blabla.html
Und ebenfalls dort befindet sich die Datei search.php
Und search.php wird nicht gefunden, d.h. das Abschicken des Formulars läuft ins Leere? Dann solltest du das Formular an die richtige URL schicken, nicht search.php, sondern /search.php.
Da in dieser Url auch das Formluar per include eingebunden werden soll,
und dieses ja immer noch im Root liegt, kommt es zum Fehler.
Oder wird das Formular nicht eingebunden? Dann passe den include()-Pfad entsprechend an, etwa include($_SERVER["DOCUMENT_ROOT"] . "formular.php"). Tipp am Rande: phpinfo(INFO_VARIABLES).

kev299
PostRank 2
PostRank 2
Beiträge: 52
Registriert: 13.05.2008, 08:18

Beitrag von kev299 » 09.07.2008, 17:30

Hallo,

habe ein ähnliches problem, will aber nicht den 1001ten mod rewrite thread aufmachen.

folgendes Verhalten von GET Parametern bei mod rewrite ist mir nicht nur bei meinen Seiten, sondern auch bei anderen Seiten schon aufgefallen.

Rewrite Rule:

Code: Alles auswählen

RewriteRule &#40;&#91;0-9&#93;+&#41;-&#40;&#91;-0-9A-Z&#93;+&#41;.html$ anzeigen.php?ID=$1 &#91;NC&#93;
Es wird also in anzeigen.php?ID=$1 eine ID per GET übergeben das Ergebnis ist dann z.B. https://www.domain.tld/20-hund.html.

nimmt man jetzt an unter der ID=21 ist in der Datenbank "katze" abgespeichert, so ist die entsprechende mod rewrite url https://www.domain.tld/21-katze.html


jetzt das Problem: unter der url https://www.domain.tld/[b]21[/b]-hund.html erscheint der Inhalt "katze" ab auch unter https://www.domain.tld/21-katze.html erscheint ebenfalls der Inhalt von Katze.

Somit hätte man ja ein DC problem wenn jemand aus gewissen Absichten die url's in den Index bringt.

Ist es nicht möglich den GET Parameter im Hintergrund zu übergeben?

Mamphil
PostRank 5
PostRank 5
Beiträge: 325
Registriert: 10.06.2008, 22:44

Beitrag von Mamphil » 09.07.2008, 17:41

Hi,

warum testest du dann nicht noch auf der Seite, ob der Titel richtig ist?

Code: Alles auswählen

RewriteRule &#40;&#91;0-9&#93;+&#41;-&#40;&#91;-0-9A-Z&#93;+&#41;.html$ anzeigen.php?ID=$1&urltitle=$2 &#91;NC&#93;

Code: Alles auswählen

<?php
/* ... */
if &#40;$urltitle != $variableMitURLTitel&#41; &#123;
    header&#40; 'HTTP/1.1 301 Moved Permanently' &#41;;
    header&#40; 'Location&#58; http&#58;//deinedomain.tld/verzeichnis/' . $ID . '-' . $variableMitURLTitel . '.html'&#41;;
    exit;
&#125;
Mamphil

Antworten