Avatar billede apo Praktikant
08. maj 2006 - 19:41 Der er 11 kommentarer og
1 løsning

Ændring af links (SEO)

Hej :-)

Foranlediget af et andet spørgsmål er jeg blevet lidt nysgerrig efter, at se eksempler på hvordan man kan lave sine links mere søgemaskinevenlige, f.eks. så man kan hente indholdet af en database via et link som dette: http://www.mitsite.dk/VisSide/ID/1/ i stedet for et normalt dynamisk link som dette: http://www.mitsite.dk/VisSide.asp?ID=1

Kan ovenstående lade sig gøre udelukkende via tilgængelige ASP-koder, uden komponenter eller programmer, der skal installeres på serveren?

Jeg har selv forsøgt mig frem men kan ikke gennemskue hvordan man gør.

Apo
Avatar billede goose Nybegynder
08. maj 2006 - 22:45 #1
Du kan jo gøre følgende.

Du opretter en skabelon som bruges til samtlige sider.

Når du gemmer en ny side i databasen, finder du først det ID nummer som siden fik.

Dernæst kopierer du din skabelon(default.asp) til en ny mappe der hedder f.eks. side4 - hvor 4 tallet svarer til det ID nummer du fandt frem til.

Når du så kalder siden www.mitsite.dk/side4/ så skal du først have fundet frem til det id nummer data skal komme fra, i det her tilfælde 4 og det kan du gøre på følgende måde:

<%
strAddresse = Request.ServerVariables("SCRIPT_NAME")
strAddresse = Left(strAddresse, InStrRev(strAddresse,"/")-1)
index = inStrRev(strAddresse,"/")

if index > 0 then strAddresse = Mid(strAddresse, index+1)
id = Mid(strAddresse,5)
%>

Så har du ID nummeret og kan hente fra din database.

/Goose
Avatar billede eagleeye Praktikant
09. maj 2006 - 08:40 #2
Problemet er at linket http://www.mitsite.dk/VisSide/ID/1/ vil give en fejl fordi folderen ikke findes.

Det med at oprette folderen og kopier en default.asp fil til hver folder mener jeg ikke holder i længden. Det kan jo komme op på flere tusindene foldere og det tager en masse unødigt plads. Det bliver meget svært at vedligeholde i længden.


Det man gør er at lave en "custom 404" fil som bliver kaldt når man tilgår en folder som ikke findes så brugeren ikke får vist en "404 folderen findes ikke" fejl.

Koden til siden skal være noget i stil med det goose har vist, koden skal kigge på stien i browseren og finde ID'et som man kan bruge til at slå op i databasen på samme måde som hvis man havde overfrøt ID som en querstring variable.

links til opsætning af ISS til custom fejl sider:
http://www.15seconds.com/issue/980210.htm
http://activedeveloper.dk/artikler/default.asp?articleid=66



-- Køre du koden på en unix server er der en htaccess fil som man kan bruge til at bestemme hvilken fejlside der skal vises.
Avatar billede goose Nybegynder
09. maj 2006 - 08:53 #3
eagleeye >> Nu skrev apo jo netop at det skulle kunne gøres kun ved hjælp af ASP, så jeg tvivler på, at han har adgang til at lave sine egne 404 sider.

At det skulle tage unødig plads vil jeg ikke give dig helt ret i, jeg bruger selv metoden og hver mappe fylder ca. 4 bytes.

Min default-fil består stort set kun af include filer så rettelser skal kun foretages ét sted for at virke på alle sider så det syntes jeg da er rimelig nemt at vedligeholde :o)

/Goose
Avatar billede goose Nybegynder
09. maj 2006 - 08:57 #4
undskyld, det var min default.asp der fyldte 4 bytes, mappen med default.asp fylder 16KB men det er stadigvæk ingen ting i vore dage hvor diskpladsen typisk er 2-300MB.

/Goose
Avatar billede apo Praktikant
09. maj 2006 - 20:04 #5
Som Goose har gættet, har jeg rigtigt nok ikke adgang til at lave mine egne fejlsider - Ikke lige nu i hvert fald.

Goose > Din kode virker fint hos mig. Dog har jeg to spørgsmål:

1. Hvordan kan jeg gøre sådan, at hvis nogen taster 'http://www.mitsite.dk/side/4/default.asp' så viderestilles der til: 'http://www.mitsite.dk/side/4/' ?

Kan man gøre det i forbindelse med:

<%
Response.Status = "301 Permanently Moved"
Response.AddHeader "Location", "http://www.mitsite.dk/side/" & strID & "/"
%>

?

2. Kan man lave en kode, der automatisk genererer en mappe på serveren, navngivet efter det seneste 'id' i databasen (f.eks. '/5/'), og derefter kopierer filen default.asp, og indsætter den i den nye mappe? Kan det evt. gøres via FSO?

(Da det formentlig er lidt tidskrævende at lave er jeg villig til at forhøje pointene hvis du har mod på opgaven)
Avatar billede goose Nybegynder
09. maj 2006 - 22:20 #6
1:
Det er jeg ikke gået så højt op i, side/4/ er jo det samme som at kalde default.asp, men jeg vil ikke benægte det kan være forkert af mig.

2:
Først finder du det Id nummer der netop er indsat i databasen. Jeg gør det med følgende:

SQLnew = "SELECT @@IDENTITY as NytID FROM TABELNAVN"
set rsIdentity = conn.execute(SQLnew)
newid = rsIdentity("NytID")
rsIdentity.close
set rsIdentity = nothing


Så kopierer jeg min skabelonmappe (som indeholder default.asp) og giver den navnet side + ID nr.:

set filesys = CreateObject ("Scripting.FileSystemObject")
set original = filesys.GetFolder("d:\web\mitsite.dk\http\skabelon")
original.Copy("d:\web\mitsite.dk\http\side" & newid &")
Set original = Nothing
Set filesys = Nothing

Så har jeg kopieret min skabelonmappe ud i en ny mappe med navnet side4 (hvis det var id nr. 4)

/Goose
Avatar billede goose Nybegynder
12. maj 2006 - 08:23 #7
Hvordan gik det, kunne du gennemskue min vejledning?

/Goose
Avatar billede apo Praktikant
12. maj 2006 - 14:54 #8
Beklager mit fravær; Jeg har været væk et par dage men har ikke glemt spørgsmålet :-)

Jeg fandt selv ud af, at lave mapper og filer med FileSystemObject (jeg nåede ikke at informere dig).

Men har du et svar på mit spørgsmål nr. 1 (viderestilling fra '/side/4/default.asp' til '/side/4/') via:

<%
' HVIS DER HENVISES TIL /SIDE/4/DEFAULT.ASP
Response.Status = "301 Permanently Moved"
Response.AddHeader "Location", "http://www.mitsite.dk/side/" & strID & "/"
%>

Kan man det?

Jeg gætter på, at der er tale om den samme problemstilling omkring tildeling af PR, som med 'http://' kontra 'http://www.'.

- Hvis nogle f.eks. skulle henvise til '/side/4/default.asp' i stedet for '/side/4/' vil man vel få tildelt to forskellige PR for den samme side - eller hvad?
Avatar billede goose Nybegynder
12. maj 2006 - 22:58 #9
Nej, jeg har ikke noget svar på spørgsmål 1, som skrevet har det aldrig bekymret mig.

www. kan du i princippet betragte som et subdomæne som af søgemaskinerne betragtes som et selvstændigt domæne, derfor har det betydning der, men jeg tror ikke på at det har betydning om default.asp er med eller ej.

/Goose
Avatar billede apo Praktikant
12. maj 2006 - 23:27 #10
Okay, det giver mening.

Det er sikkert også derfor, at jeg ikke selv har kunne få defineret forskellen mellem: '/side/4/' og '/side/4/default.asp' via ASP - Egentlig er der jo tale om den samme adresse uanset om 'default.asp' er synlig i adresselinjen eller ej.

Jeg lukker her, og siger mange tak for hjælpen. Der er velfortjente points på vej :-)

Apo
Avatar billede goose Nybegynder
15. maj 2006 - 09:23 #11
Jamen jeg takker og bukker og velbekomme :o)

/Goose
Avatar billede apo Praktikant
15. maj 2006 - 11:23 #12
:-)
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
Kurser inden for grundlæggende programmering

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