Avatar billede hrole Mester
13. august 2013 - 23:35 Der er 6 kommentarer og
1 løsning

Redirecte med php

Hej,

Jeg er igang med at lave søgemaskinevenlige urls, hvilket volder en del problemer. Første del er løst, men da jeg gerne vil bevare linkjuice har jeg brug for hjælp. Foreløbig har jeg:

$url = $_SERVER["REQUEST_URI"];
$parts = explode("/", $url);
if ($parts[1] == 'opskrift') {
      require_once("http://www.noget.dk/resultat.php?groentsag=".$parts[2]."&frugt=".$parts[3]);
}

og det fungerer, men så kommer problemet med at redirecte de gamle gamle urls til de nye.

Jeg har forsøgt følgende uden held:

$filnavn = explode("?", basename($_SERVER["REQUEST_URI"]));
if ($filnavn[0] == 'resultat.php' ) {
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: http://www.noget.dk/opskrift/'.$_GET['groentsag'].'/'.$_GET['frugt']);
    exit;
}

Nogen bud?
Avatar billede repox Seniormester
15. august 2013 - 10:11 #1
Hvorfor ikke bare lave en .htaccess til de tidligere URL'er der peger på de nye?
Avatar billede hrole Mester
15. august 2013 - 11:24 #2
Det har jeg også været igang med, men det fungerede ikke og desuden vil jeg gerne undgår problemer med æøå (i queries).

Her udpluk fra tidligere .htaccess:

RewriteRule ^mad-oversigt/([^/]*)/([^/]*)/?$ /opskrifter/soeg.php?groentsag=$1&frugt=$2

RewriteRule ^artikler/?$ /artikler/oversigt_artikler.php

Redirect 301 /artikler/artikel_oversigt.php http://www.minside.dk/artikler/artikel_oversigt.php

RewriteRule'erne fungerer fint, men problemet er at redirecte fra gammel url til ny for at bevare linkjuice. Og så ville jeg gerne undgå æøå i de nye urls (fx ændre til ae, oe og aa).
Avatar billede repox Seniormester
15. august 2013 - 11:48 #3
Giv et par eksempler på gamle og nye URL'er.
Avatar billede hrole Mester
15. august 2013 - 11:58 #4
gamle:
/artikler/oversigt_artikler.php
/opskrifter/soeg.php?groentsag=agurk&frugt=æble

nye:
/artikler/
/mad-oversigt/agurk/æble/ (som bør være aeble)
Avatar billede repox Seniormester
15. august 2013 - 12:34 #5
Det ville jo være nærliggende at at bruge PATH_INFO til formålet:

<?php


    $segments = explode("/", $_SERVER['PATH_INFO']);

    if( count($segments) == 0 )
    {
        //vis forsiden
        include "frontpage.php";   
    }
    else
    {
        switch($segment[1]) // jeg mener at $segment index 0 er tomt
        {
            case "artikler":
                include "/artikler/oversigt_artikler.php";
                break;
            case "mad-oversigt":
                $groentsag = $segment[2];
                $frugt = $segment[3]; // her kunne du jo bruge str_replace til at erstatte æøå med det du ønsker
                include "/opskrifter/soeg.php";               
                break;               
            default:
                include "404.php";
        }       
    }

Avatar billede hrole Mester
28. august 2013 - 09:31 #6
tak. smid svar.
Avatar billede repox Seniormester
28. august 2013 - 09:39 #7
Det fik du her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester