Zur Navigation

JavaScript ins PHP umwandeln

Aus JS weiterleitung eine 301 machen

1 mirkz

Hi Com,

Ich habe diesen JS Code mit dem ich aus der URL den Ordnernamen auslese und dann auf eine andere Seite weiterleite.

<script type="text/javascript">
<!--
var Url = window.location.pathname
var str = Url;
var Url = str.replace(/-/gi, "+");
Url=  Url.substring(1, Url.lastIndexOf('/'));
window.location = "http://www.irgendwas.com/" + Url + "/index.html";
//-->
</script>

Das ganze wird erst nach eine Abfrage im Script ausgelöst und es ist nicht möglich die weiterleitung im htaccess zu schreiben.

Ich brauche genau diese abfrage im PHP mit einer 301 weiterleitung.

Kann mir jemand helfen?

Gruss Marko

29.11.2010 14:41

2 Jörg Kruse

window.location.pathname entspricht wohl $_SERVER['REQUEST_URI']

analog zu str.replace gibt es in PHP die Funktion str_replace()

analog zu substring gibt es in PHP die Funktion substr()

Eine 301 Weiterleitung kannst du mit header() konstruieren:

header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.irgendwas.com/' . $url . '/index.html';
header('Connection: close');

29.11.2010 15:03

3 mirkz

Bin leider kein PHP expert... aber hab das mal so probiert:

$url = str_replace("-", "+", substr($_SERVER['REQUEST_URI'], 1, -23));
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.irgendwas.com/' . $url . '/index.html';
header('Connection: close');

leider klappt es nicht so... was mache ich falsch?

29.11.2010 15:51

4 Jörg Kruse

Wie sieht denn eine Beispiel-URL aus, unter der das Script aufgerufen wird? und wohin wirst du dann weitergeleitet - oder passiert dann gar nichts?

Am Anfang des Scriptes muss auch noch ein einleitendes "<?php" stehen, am Ende ein "?>" - das ist der Fall?

$url = str_replace("-", "+", substr($_SERVER['REQUEST_URI'], 1, -23));

D.h. am Ende der URL sollen 23 Zeichen entfernt werden?

29.11.2010 16:47

5 mirkz

Ok.

Beispiel URL sieht so aus:

http://www.irgendwas.com/microsoft-xbox-360/artikel_376479201.html

Problem das Produkt ist ausverkauft, seite aber bei google indexiert.

Idee ich leite die Seite dann, wenn das Produkt ausverkauft ist auf die Suchseite um.

http://www.irgendwas.com/suche/microsoft+xbox+360/index.html


Der Teil "/artikel_376479201.html" ist immer gleich lang deshalb -23

Wegen dem "<?php" am anfang und am Ende. Es handelt sich um Smarty Engine und es steht {php} und {/php} das ist schon richtig.

29.11.2010 17:05

6 Jörg Kruse

Ob das mit Smarty so machbar ist, weiß ich nicht.

Wirst du denn zu einer falschen URL weitergeleitet oder passiert gar nichts?

Es darf vor dem header() keine Ausgabe von HTML-Code erfolgen, auch keine Leerzeile. PHP würde in so einem Fall allerdings eine Fehlermeldung ausgeben. Gegebenenfalls musst du zum Debuggen dafür sorgen, dass PHP-Fehler ausgegeben werden (mit error_reporting und display_errors)

29.11.2010 17:39

7 mirkz

Momentan sieht es so aus das ich eine 410 Error Gone an der stelle ausgebe. Das funktioniert so weit sehr gut.

sobald ich aber da einen 301 reinmache geht garnichts mehr. Nicht mal wenn das Produkt da ist und die if abfrage gar ncht greifen sollte...

display_error zeigt nichts an

29.11.2010 23:24

8 mirkz

besser gesagt sobald
header('Location: http://www.irgendwas.com/';

drin ist geht gar nichts mehr

29.11.2010 23:34 | geändert: 29.11.2010 23:34

9 Jörg Kruse

Ja, da hatte ich noch eine schließende Klammer vergessen :-\

header('Location: http://www.irgendwas.com/');

Normalerweise gibt PHP dann auch einen Syntax-Fehler aus - wenn ein entsprechender Wert für error_reporting gesetzt und display_errors aktiviert ist (oder verschluckt Smarty die Fehlerausgabe?).

29.11.2010 23:39 | geändert: 29.11.2010 23:41

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]