[mod_rewrite] Variabel wird ungewollt an Adresse übergeben

hemorieder

Lieutenant
Registriert
März 2003
Beiträge
652
Hey,

ich weiß die Überschrift ist nicht sehr Aussagekräftig, aber es ist schwierg dies in einem Satz zu beschreiben. Dafür umso einfacher anhand eines Beispiels, bzw. anhand des Codes.

Problem:

In der mod_rewrite steht, dass wenn man die domain so eingibt

Code:
www.domain.de
man auf

Code:
www.domain.de/meine-page.html
landet, bzw so ist es gewollt.

Leider ist das Resultat so:

Code:
www.domain.de/meine-page.html?s=index

Woran liegt das ?
Hier der Inhalt der .htaccess

Code:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(img|css)
RewriteRule ^([^/]*).html$ /index.php?s=$1 [L]

Redirect Permanent /index.html http://www.domain.de/meine-page.html

ErrorDocument 404 /index.php

Desweiteren sagen mir so SEO-Tools das ich keine 404 Seite habe, aber ich habe doch eine definiert ?

Ich hoffe ihr versteht mein Problem.

LG
 
Hatte selbst meine liebe mühe mit Mod rewrite..

Würde folgendes versuchen:
5. Redirect Permanent /index.html http://www.domain.de/meine-page.html
1. RewriteEngine On
2. RewriteCond %{REQUEST_URI} !^/(img|css)
3. RewriteRule ^([^/]*).html$ /index.php?s=$1 [L]

Weil erst krallt sich die Regel 3.
deine Datei und dann funktioniert Redirect Permanent 5. nicht mehr.

Also erst 5.
Wobei, falls http://www.domain.de/meine-page.html auf dem selbsten Server ist krallt sich danach die
die 3. die Datei und macht daraus http://www.domain.de/index.php?s=meine-page
Aber alls du das verhindern willst, gibt es dafür nen Kürzel...
 
Zuletzt bearbeitet:
Ist eigentlich recht einfach.

Wenn du auf www.blub.de gehst, wirst du automatisch auf die index.html weitergeleitet (vom Server so eingestellt).
Die RewriteRule macht daraus dann ein index.php?s=index
Das Redirect Permanent ist somit also wirkungslos, da du durch die RewriteRule niemals auf die index.html gelangst.

Drehst du das ganze um (so wie hemorieder gesagt hat), wird www.blub.de auf /meine-page.html weitergeleitet.
Allerdings greift danach dann die RewriteRule und wandelt es wieder in /index.php?s=meine-page um.
Um das zu verhindern, könntest du eine Ausnahme (RewriteCond) für meine-page.html einbauen.

quasi so:
5. Redirect Permanent /index.html http://www.domain.de/meine-page.html
1. RewriteEngine On
2. RewriteCond %{REQUEST_URI} !^/(img|css)
RewriteCond %{REQUEST_URL} !^/meine-page.html
3. RewriteRule ^([^/]*).html$ /index.php?s=$1 [L]
 
Oder definierst einfach den Directory Index neu per .htaccess... Es muss keine index.html/php/asp/... sein. Man kann durchaus auch sagen: Rufe blubb.html auf, danach versuche blubb.php, dann index.html und wenn alles nix hilft versuch es mit index.php
Alles nur eine Frage der Definition.
 
es scheint irgendwie alles nichts zu helfen, jetzt ist mein vorhaben es komplett zu lassen, also aus www.domain.de soll auch nur www.domain.de werden,lustigerweise will es einfach nicht mehr gehen, ich verstehe nicht warum....

das ist die htaccess gerade:

Code:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(img|css)
RewriteRule ^([^/]*).html$ /index.php?s=$1 [L]
ErrorDocument 404 /

in meiner index.php steht oben, das:

PHP:
<?php
$s = (isset ($_REQUEST['s'])) ? $_REQUEST['s'] : 'meine-page';
?>

ich kann den fehler einfach nicht finden ?! immer wenn ich auf www.domain.de gehe lande ich trotzdem noch auf www.domain.de/meine-page.html?s=index

was ist da los ?

-----------------------
Im Safari und Chrome ist es nicht mehr so, nur im Firefox, kann es daran liegen das der sich das irgendwie gemerkt hat ?
 
Zuletzt bearbeitet:
Zurück
Oben