Seite 1 von 1

301 - verzeichnis zu .html ohne "anhang"

Verfasst: 10.09.2008, 17:56
von valled
hallo
hab folgendes problem mit modrewrite

mein ziel:

/blog/*alles* soll auf blog.html weitergeleitet. hab ich mit:

RedirectMatch ^/blog /blog.html [L,R=301]

gelöst.

nun aber mein problem:
gibt jemand z.b. www.domain.de/blog/?haha=123 ein so wird daraus: domain.de/blog.html?haha=123

wie krieg ich es hin das immer !!! nur auf blog.html ohne den "crap hinter der url " weitergeleitet wird?

vielen dank
grüße

Verfasst:
von

Re: 301 - verzeichnis zu .html ohne "anhang"

Verfasst: 10.09.2008, 20:39
von Mork vom Ork
valled hat geschrieben:/blog/*alles* soll auf blog.html weitergeleitet. hab ich mit:

RedirectMatch ^/blog /blog.html [L,R=301]

gelöst.
Mal abgesehen davon, dass du da einen Schrägstrich hinter ^/blog vergessen haben musst (ansonsten wird's eine Endlosschleife), hat [L,R=301] nichts mit RedirectMatch zu tun, das sind Optionen für RewriteRule. Es wundert mich, dass der Apache das nicht nur schlucken, sondern dass es auch noch zum gewünschten Ergebnis führen soll.
gibt jemand z.b. www.domain.de/blog/?haha=123 ein so wird daraus: domain.de/blog.html?haha=123
RedirectMatch permanent ^/blog/ /blog.html?

oder, in /.htaccess:

RewriteEngine on
RewriteBase /
RewriteRule ^blog/ /blog.html? [L,R=301]

Die URL-Parameter werden in beiden Fällen entfernt, RewriteRule hat hier gegenüber RedirectMatch aber den Vorteil, dass auch das Fragezeichen selbst verschwindet.

Verfasst: 10.09.2008, 20:58
von valled
hi,
danke für deine antwort.

also:
RedirectMatch ^/blog /blog.html [L,R=301] hat so 1a gefunzt


RedirectMatch permanent ^/blog/ /blog.html? -> da hängt jetzt imma ein ? dran und /blog/?123=123 klappt nachwievor: blog.html?123=123

das hier: klappt gar nicht oder muss das ins blog verzeichniss?

RewriteEngine on
RewriteBase /
RewriteRule ^blog/ /blog.html? [L,R=301]


danke
grüße
valentin

edit:
ich machs mit php:


function haskeys($array) {
$keys = array_keys($array);
$keys_count = count($keys);
$foo = $array['rw'] == 1 ? 1 : 0;
$ret = $keys_count > $foo ? TRUE : FALSE;
return $ret;
}
if(haskeys($_GET)){ echo"url enthält ?... exit,die();, redirect.. what ever\n";}

danke für deine hilfe

Verfasst: 10.09.2008, 21:33
von Mork vom Ork
Mmh, verkehrte Welt. Ich habe die beiden Vorschläge ausprobiert, hier funktionieren sie. Deine erste Fassung haut er mir hingegen um die Ohren.

Darauf, dass bei RedirectMatch das Fragezeichen noch dranhängt, hatte ich ja hingewiesen und deshalb die RewriteRule-Version empfohlen. Sie gehört in die oberste .htaccess.

Verfasst: 10.09.2008, 21:37
von valled
ich machs mit php:


function haskeys($array) {
$keys = array_keys($array);
$keys_count = count($keys);
$foo = $array['rw'] == 1 ? 1 : 0;
$ret = $keys_count > $foo ? TRUE : FALSE;
return $ret;
}
if(haskeys($_GET)){ echo"url enthält ?... exit,die();, redirect.. what ever\n";}

danke für deine hilfe

ps: code stammt von nem programmierfreund :)