Hmm,
Det är faktiskt hyffsat enkelt. Du börjar med att skapa en 404.asp som får ta hand om alla requests.
Sidan som du frågade efter skickas med i Request.ServerVariables("QUERY_STRING")
Du kan ta det värdet, leta reda på alla slashar, ta värden som finns efter din domän.tld.
Därefter har du en funktion som kollar av vilken "undermapp" du vill åt och skickar dig vidare till en funktion för den "undermappen". Tänkte du bara använda artiklar som undermapp blir det enklare. Då tar du bara det sista värdet som skickad med och gör en sql-fråga till databasen efter artikelnamnet, plockar ut pid och artID från databasen, lagrar dem i sessioner.
Därefter kan du köra en server.transfer("artikel.asp")
Och därifrån hämtar du ut pid och artid från sessionen istället för en querystring.
För att skriva ut SEF-länkar kan du ju göra en funktion som du kallar på typ:
<a href="<%=SEFUrl(1,81)%>">
Där SEFUrl kör en sql-sats där den hämtar artikel namnet baserat på idt du skickade med och skickar tillbaka typ: "artiklar/"&namn_pa_artikel
i samma funktion kan du ju se till att göra en replace på å ä och ö till aa, ae och oe. Då google ser dessa som åäö...
Det vore bra om du kunde skicka ett http 200 också för okej..men jag är tveksam om det går.
Men hur skall man göra. Jag vet inte alls hur man gör. skall jag länka om till mina kurser och annat på helt annat sätt eller hur gör man. Alla som länkar mig vet ju att det ligger under ex: artikel.asp?pid=1&aID=1
VIll nån hjälpa mig med detta så jag får igång det. Betalning självklart om det blir för mycket jobb.
Hmm, du kan ju kolla om du får en querystring medskickad till artikel.asp men sessionerna med artid och pid inte är definierade. Om du får en querystring så gör du en fråga baserat på detta och hämtar ut artikel-namnet ur databasen och skickar en redirect till /artiklar/artikeln_namn där sedan 404-sidan gör det som jag skrev i min post ovan.
Om vi vänder på frågan. Hur tror du att du skall börja?
<!--#Include file="Include/settings.asp"-->
<!--#Include file="Include/function.asp"-->
<!--#Include file="Include/db.asp"-->
<%
Session("pid") = request.QueryString("pid")
Session("artID") = request.QueryString("artID")
Session("scriptID") = request.QueryString("scriptID")
Function ReplaceText(strValue)
strValue = Replace(strValue," ","-")
strValue = Replace(strValue,"å","aa")
strValue = Replace(strValue,"ä","ae")
strValue = Replace(strValue,"ö","oe")
ReplaceText = strValue
End Function
If Session("artID") <> "" then
Set RS=Conn.Execute("Select rubrik From gruvsjo_artiklar Where verify=1 and artID=" & FixSQL(Session("artID")))
If Not RS.EOF Then
strRub = ReplaceText(RS(0))
Else
strRub = "Error"
ENd If
RS.Close:Set RS=Nothing
End If
Response.redirect "/artiklar/" & strRub
%>
i 404.asp skickar jag till testfilen open.asp som är orginalfilen fast där hämtar jag ut via Session("pid") och Session("artID")
Är det rätt? Måste nog ha med ID i länken för att kunna hämta ut det på en gång via att skriva URLén eller?
Parsea variabeln i vilken du har sparat query-stringen efter vilken "undermapp " (web, artiklar, script), samt vilka pID och artID du har. Då kan du skippa tt bry dig om vilket artikelnamn som skickas med.
Du skickar dem till olika funktioner baserat på vilken undermapp du får. Gör en databas-fråga på pID och artID, plocka ut det nödvändiga och presentera det. Alternativt så plockar du ut pID och det andra idt från databasen, lägger det i sessioner och gör en server transfer till t.ex artiklar.asp eller script.asp
För att få bakåt- kompabilitet kan du låta ex vis web.asp göra följande: