Mod Rewrite: Umleitung ohne Änderung der URL

M

Mr. Snoot

Gast
Hio,

ich möchte meine dynamischen ("langen") URLs per Rewrite ändern (in "kurze"), in der Adresszeile soll dann die "kurze" URL stehen bleiben.


Irgendwie soll das ja mit Flags am Ende der RewriteRule gehen, aber keine Flag zeigt irgendeine Wirkung. Ich habe auch noch keine wirkliche Übersicht gefunden, welche Flag was genau macht bzw. werden dort nicht alle Flags erklärt, die ich so bei Google gefunden habe (z.B. P, T).

Bspw. habe ich diese Rule in der .htaccess:
Code:
RewriteEngine on
RewriteRule ^/grundlagen$ /hl.php?bereich=grundlagen
Stehen bleiben soll eben /grundlagen, angezeigt wird aber /hl.php?bereich=grundlagen.


Wie verhindere ich das? [L], [P], [PT], ..?

Eigentlich sollte doch nur mit [R] extern (= für den Besucher eben sichtbar?) umgeleitet werden, aber das hab ich ja gar nicht angegeben!?
 
Code:
RewriteEngine On
RewriteBase /base/url/to/script
RewriteRule ^([^/\.]*)/?$ index.php?p1=$1
RewriteRule ^([^/\.]*)/([^/\.]*)/?$ index.php?p1=$1&p2=$2
RewriteRule ^([^/\.]*)/([^/\.]*)/([^/\.]*)/?$ index.php?p1=$1&p2=$2&p3=$3
RewriteRule ^([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/?$ index.php?p1=$1&p2=$2&p3=$3&p4=$4
RewriteRule ^([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/?$ index.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5
RewriteRule ^([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/?$ index.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5&p6=$6
RewriteRule ^([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/?$ index.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5&p6=$6&p7=$7
RewriteRule ^([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/?$ index.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5&p6=$6&p7=$7&p8=$8
RewriteRule ^([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/?$ index.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5&p6=$6&p7=$7&p8=$8&p9=$9 [L]
RewriteRule ^([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/([^/\.]*)/?$ index.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5&p6=$6&p7=$7&p8=$8&p9=$9&p10=$10 [L]

funktioniert perfekt und /test/test/test bleibt z.b. stehen.
 
Es klappt, allerdings ist es etwas merkwürdig.

Soweit ich das bei Apache.org verstanden habe, brauche ich RewriteBase nicht.

Wenn ich deinen Code auf meine Pfade anpasse sähe er bspw. so aus:
Code:
RewriteRule ^([^/\.]*)/?$ hl.php?bereich=$1
Dann wird aber aus /grundlagen -> /grundlagen/?bereich=grundlagen, ich denke mal das '?' vor '$' beim Suchmuster ist falsch!? Ohne '?' gehts jedenfalls.

Jedoch hakt es noch etwas.

So wie es dann ist
Code:
RewriteRule ^([^/\.]*)/$ hl.php?bereich=$1
wird aus /grundlagen automatisch /grundlagen/, wenn ich dann noch eine zweite Variable anhänge muss ich jedoch den abschließenden '/' weglassen, also:
Code:
RewriteRule ^([^/\.]*)/([^/\.]*)$ hl.php?bereich=$1&thema=$2
Wenn ich bei nur einer Variable den abschließenden '/' weglasse
Code:
RewriteRule ^([^/\.]*)$ hl.php?bereich=$1
wird die Seite nicht gefunden. Ergibt das einen Sinn?
 
Zuletzt bearbeitet:
Zurück
Oben