webForumDet fria alternativet

Behöver hjälp med redirect

PHP

6 svar · 569 visningar · startad av Nova

Medlem sedan feb. 2005216 inlägg
Frågan#1

På en sida jag har, har man kunnat gå tre olika vägar till samma sida och urlerna har sett ut så här.

/product_info.php?cPath=27_35&products_id=56 och
/product_info.php?manufacturers_id=12&products_id=56.
/product_info.php?products_id=56

Nu har jag tagit bort cPath och manufacturers_id på alla länkar som leder till product_info.php?products_id=56. Men sökmotorerna har fortfarande lagrat en del av de gammla urlerna så jag skulle vilja göra en redirect 301 på dem.
Det borde gå att göra med en ifsats typ

if request.QueryString = cPath <>and products_id <> redirect 301 /product_info.php?products_id=request.QueryString products_id
else if
request.QueryString = manufacturers_id <> and products_id <> redirect 301 /product_info.php?products_id=request.QueryString products_id

Men jag har ingen aning hur man skriver det i Php.

Medlem sedan juni 20014 421 inlägg
#2
if ( ( isset($_GET['cPath']) || isset($_GET['manufacturers_id']) ) && isset($_GET['products_id']) ) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: /product_info.php?products_id=".$_GET['products_id']);
header("Connection: close");
}
Medlem sedan feb. 2005216 inlägg
#3

Tackar och bugar :)

Medlem sedan aug. 20039 340 inlägg
#4

colione: Är det inte mer korrekt att använda die() istället för header("Connection: close");? (Eller möjligen båda tillsammans)

Medlem sedan juni 20014 421 inlägg
#5

Bah nu gör du det igen nitro2k01. Skriver mitt namn med stort c. :p

Det är väl lite hugget som stucket, die (eller exit för den delen) genererar en connection close. Jag föredrar dock att använda header så jag har koll på vilka huvuden som faktiskt skrivs ut.
Skälet till att man använder det där är för att IE har en tendens att strula om man inte skickar med Connection: close, antingen via die, exit eller header.

Jag brukar använda die eller exit när jag vill skriva ut något mer.

Du ska alltså heller inte använda båda samtidigt.

Medlem sedan aug. 20039 340 inlägg
#6

Varför jag tycker att man ska använda die eller dylikt är för att jag är orolig att skripet inte slutar köras direkt om man bara skickar Connection: close
Det kanske är en obefogad oro?
Och så har jag redigerat ditt namn. Jag fick för mig att ditt namn enligt konvention skulle stavas med stor bokstav i början av en mening, sorry.

Medlem sedan juni 20014 421 inlägg
#7

Jo din oro stämmer, scriptet fortsätter köras om man inte kastar in en die eller exit. Om man har kod som kan exekveras efter en if-sats som redirectar bör man använda det. I detta fallet verkar det ju vara så :).

Nytt exempel:

if ( ( isset($_GET['cPath']) || isset($_GET['manufacturers_id']) ) && isset($_GET['products_id']) ) { 
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: /product_info.php?products_id=".$_GET['products_id']); 
exit();
}
270 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)