Avatar billede labisama Nybegynder
11. juni 2009 - 20:26 Der er 13 kommentarer og
1 løsning

Nemme urls

Hej med jer!

Jeg er igang med noget søgemaskineoptimering, og har fundet ud af at URL's er meget vigtige.

Pt. har stort set alt jeg henter fra min database nogle unikke id's, og fx. hentes nyheder derfor således:

nyheder.php?id=3

Nyhed med id = 3 i databasen vises.

Jeg kunne til slut godt tænke mig at få indarbejdet mod_rewrite-funktion så nyheder kunne vises således:

nyheder/overskrift-paa-nyhed/

Det kræver jo så at min nyhed evt. skal hentes således:

nyheder.php?overskrift=teeekst

MEN!

Hvordan henter man en nyhed udfra en tekst-streng? Kan jeg udelukkende benytte mig af "urlencode", for at sikre mig overskriften ikke indeholder nogle ulovlige tegn?

Og kan den så godt stadigvæk "sammenligne" med overskriften i databasen?

På forhånd tak.
Avatar billede yumm Nybegynder
11. juni 2009 - 20:28 #1
Kan du ikke bare smække et id på til slut? Eller sart?

nyheder/overskrift-paa-nyhed-21
nyheder/21-overskrift-paa-nyhed
nyheder/21/overskrift-paa-nyhed
Avatar billede majbom Novice
11. juni 2009 - 20:39 #2
du gør på nøjagtig samme måde som når du hente ud fra et tal :)

men det er mig bekendt hurtigere og dermed mindre ressourcekrævende at søge efter et tal, så yumms løsning ville være et godt bud...
Avatar billede labisama Nybegynder
11. juni 2009 - 20:51 #3
Jo jeg er godt klar over at det nok er nemmere for serveren bare at finde det samme tal. Men nu skrev jeg også at det var for at søgemaskine optimere. :)

yumm > Kan du uddybe det?

Desuden synes jeg ikke at jeg får svar på om jeg kan bruge urlencode, eller hvad andre gør?
Avatar billede leif Seniormester
11. juni 2009 - 20:59 #4
Hvorfor ikke oprette et felt i databasen, kaldet link og der i generere det som du vil bruge i adresselinien, smide et index på så burde det ikke være et problem.
Avatar billede labisama Nybegynder
11. juni 2009 - 21:02 #5
leif > Tror jeg ikke er nogen holdbar løsning hvis man har et stort, dynamisk og kompleks site.

Kunne forstå at det var en mulighed hvis det bare var nogle simple faste php-sider.

Eller har jeg misforstået dig?
Avatar billede leif Seniormester
11. juni 2009 - 21:07 #6
Hvorfor er det ikke en mulighed ? Du gemmer jo vel noget UniktID, Overskrift osv i databasen ?



Når jeg kalder det link er det blot det felt jeg kontrollere op imod i stedet for fx. UniktID
Avatar billede labisama Nybegynder
11. juni 2009 - 21:12 #7
I mine øjne er det bare lidt dobbelt arbejde for mig (og for serveren).

Jeg kan godt se at det er en mulighed, men ville helst hvis der var en mere "direkte vej".
Avatar billede leif Seniormester
11. juni 2009 - 21:29 #8
Hvorfor er det dobbeltarbejde ? Jeg forstår ikke hvorfor du mener det er det.


Et Quick&Dirty til at genere kunne være:
<?php

$overskrift = "Dette er en test";
$url = str2lower($overskrift);

$url = str_replace(" ", "-", $url);

?>


Så vil $url blive "dette-er-en-test" og det er så det som bruges ved din dynamiske genering af oversigter og det som du så kontrollerer på.

Sorry, men du fik det til at lyde som Manuelt arbejde, men det behøver det ikke være.
Avatar billede labisama Nybegynder
11. juni 2009 - 21:51 #9
Nu falder den på plads, tror jeg nok.

Jeg misforstod dig lige i starten.

Jo det er vel en mulighed med at lave endnu et "url-relateret" felt i min database tabel - som der så bliver hentet fra.

Men problemet er jo så lidt at jeg har ret mange tabeller og data deri, så det er nok et større arbejde at skulle få lavet overskrifterne url-venlige i en ny række i tabellen.

Kunne man ikke bruge urlencode direkte på fx. cellen "Overskrift"?

Jeg har set at mange blog-plugins generer disse URL's automatisk, hvad gør de?
Avatar billede leif Seniormester
11. juni 2009 - 22:05 #10
urlencode kunne vil være en mulighed
Avatar billede repox Seniormester
11. juni 2009 - 22:47 #11
Jeg har et felt i min tabel med nyhederne der kaldes safeUrl.
Strukturen er så noget ala:
| newsId | safeUrl | header | content | ... |

Når jeg så lægger min nyhed i tabellen kører jeg min overskrift (header) igennem funktionen her:

function makeSafeURL($string)
{
    //her kunne være kode der gør æ ø g å pæn str_replace() f.eks.
    $string = ereg_replace("[^a-zA-Z0-9]", "_", $string);
    return $string;
}

og lægger den som værdi i safeUrl. Den bruger jeg så til at identificere min nyhed med gennem
http://example.org/news/dette_er_min_nyhed
Avatar billede labisama Nybegynder
14. juni 2009 - 18:07 #12
Leif smid gerne svar.

Det lyder til at det er dét "man" gør.
Avatar billede leif Seniormester
14. juni 2009 - 22:08 #13
Jeg synes nu at de andre også er kommet med gode forslag og løsninger.
Avatar billede labisama Nybegynder
14. juni 2009 - 22:54 #14
Enig, men din forklaring støttede op om det jeg ellers har læst om hvordan det kan gøres.

Det er jo også den løsning som fx. repox bygger videre på.
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