Zur Navigation

.htaccess Weiterleitung per 301 alte auf neue Seite [5]

41 Jörg Kruse

Ein Ausdruck mit dem Quantor ? kommt ein- oder keinmal vor:

o_id=1009&order=(pr|refno%20abs)&ka=1(&results=)?

Wenn du alle Query Strings erfassen möchtest, die mit der kurzen Variante beginnen, kannst du diese auch einfach hinten offen lassen:

o_id=1009&order=(pr|refno%20abs)&ka=1

10.04.2013 16:10

42 christa

Zitat von Jörg
Ein Ausdruck mit dem Quantor ? kommt ein- oder keinmal vor:

o_id=1009&order=(pr|refno%20abs)&ka=1(&results=)?

Wenn du alle Query Strings erfassen möchtest, die mit der kurzen Variante beginnen, kannst du diese auch einfach hinten offen lassen:

o_id=1009&order=(pr|refno%20abs)&ka=1

habe nachdem Google sich im kurzen Ausdruck verlaufen hat, den kurzen auch noch eingefügt, seit dann ist Ruhe im Nähkästchen. Würde doch bedeuten, dass ich die längeren Ausdrücke entfernen kann, so habe ich Dich verstanden?

10.04.2013 19:26

43 Jörg Kruse

Der zweite (kürzere) Ausdruck deckt auch den ersten längeren ab.

Da die Begrenzungszeichen ^ und $ fehlen, kann vorne und hinten noch alles mögliche stehen (oder auch nicht)

10.04.2013 21:14 | geändert: 10.04.2013 21:15

... 2 Monate später ...

44 christa

hallo Forum

möchte gerne php-Seiten mit einem bestimmten Muster auf eine eigene 404-Seite weiterleiten.
der query-string lautet id= id=123&ha=2&ab=1
Es soll aber nur id=123 detektiert werden, der Rest &ha=2&ab=1 kann beliebig sein und soll keine Rolle spielen.

Die php heißt je nach Sprache immun_de.php resp. immun_en.ph. Die Sprache mit _de oder _en soll als Platzhalter in den Code einfließen und ebenfalls keine Rolle spielen.Die relative Zielseite heißt pfad/404.html

schematisch:
immun_...php?id=123 weiterleiten nach /pfad/404.html

geht das? und wie müsste dann die vollständige Umleitung lauten?

im voraus besten Dank
Christa

24.06.2013 07:34

45 Jörg Kruse

Weiterleiten könntest du so:

RewriteCond %{QUERY_STRING} id=123
RewriteRule ^immun_(de|en)\.php$ http://example.com/pfad/404.html [R=301,L]

Allerdings wird dann auf der Zielseite kein Status Code 404 gesendet. Suchmaschinen werden die Zielseite also ganz normal indizieren.

Anstelle der Weiterleitung könntest du die Seite alternativ einfach auf eine Zielseite 404.php umschreiben:

RewriteCond %{QUERY_STRING} id=123
RewriteRule ^immun_(de|en)\.php$ pfad/404.php [L]

... und dort in der ersten Zeile vor dem HTML-Inhalt per PHP einen Status Code 404 senden:

<?php header("HTTP/1.0 404 Not Found"); ?>

24.06.2013 08:21 | geändert: 24.06.2013 08:22

46 christa

RewriteCond %{QUERY_STRING} id=123
RewriteRule ^immun_(de|en)\.php$ pfad/404.php [L]

wenn mehrere php-Seiten in Frage kommen und das in mehreren Sprachen. kann ich es dann auch so schreiben?

RewriteCond %{QUERY_STRING} id=123
RewriteRule ^\.php$ pfad/404.php [L]


24.06.2013 09:52

47 Jörg Kruse

Ohne das vordere Begrenzungszeichen "^" - damit der Ausdruck vorne offen ist

24.06.2013 14:05

48 christa

... und dort in der ersten Zeile vor dem HTML-Inhalt per PHP einen Status Code 404 senden:

<?php header("HTTP/1.0 404 Not Found"); ?>

funktioniert leider nicht.

Fehlermeldung: Warning: Cannot modify header information - headers already sent by (output started at /var/kunden/webs......./404.php:2) in /var/kunden/webs......./404.php on line 2


der Code ganz oben auf der Seite sieht so aus:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php header("HTTP/1.0 404 Not Found"); ?>
<html>
<head>

ohne die Zeile <?php header("HTTP/1.0 404 Not Found"); ?>
funktioniert die Seite ganz normal. Woran könnte es liegen?

25.06.2013 19:19

49 Jörg Kruse

Warning: Cannot modify header information - headers already sent by (output started at /var/kunden/webs......./404.php:2) in /var/kunden/webs......./404.php on line 2

header() wird in Zeile 2 aufgerufen. Befindet sich darüber eine Leerzeile? solche zählen auch als HTML-Inhalt.

Edit:
achso, in Zeile 1 steht die Doctype-Angabe - der PHP-Code muss ganz nach oben!

25.06.2013 19:27 | geändert: 25.06.2013 19:28

50 christa

Edit:
achso, in Zeile 1 steht die Doctype-Angabe - der PHP-Code muss ganz nach oben!

dann ist es Zeile 1 die den Fehler erzeugt

<?php header("HTTP/1.0 404 Not Found"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>

Warning: Cannot modify header information - headers already sent by (output started at /var/kunden/....../404.php:1) in /var/kunden/....../404.php on line 1

stimmt vielleicht was am Ausdruck nicht?

25.06.2013 19:55