Avatar billede mettecarsten Nybegynder
11. juni 2007 - 10:38 Der er 15 kommentarer og
1 løsning

404-side med asp

Hej eksperter

Jeg sidder og arbejder med 404-fejl (kører asp). Jeg har et domæne med en simpel cms-løsning - folk bruger mit domæne efterfulgt af deres eget valg, f.eks. www.mitdomæne.dk/mitvalg

Hvis www.mitdomæne.dk/mitvalg ikke findes, vises en side, som fortæller, at siden ikke findes. Hvis i stedet der er oprettet en bruger med valget "mitvalg", tager den i stedet brugerens id og viser første side af brugerens hjemmeside. Hvis der dermed indtastes www.mitdomæne.dk/mitvalg ændres det straks til f.eks. www.mitdomæne.dk/side.aps?Id=345.

Mit ønske er, at mappenavnet "mitvalg" bibeholdes, så brugeren ser www.mitdomæne.dk/mitvalg/side.aps?Id=345 i stedet for blot www.mitdomæne.dk/side.aps?Id=345. Kan det lade sig gøre? Kan man alternativt automatisk oprette en asp-fil på serveren, som herefter blot inkluderer filen side?

Jeg håber, at ovenstående giver mening :-) Virkelig på forhånd tak.
Avatar billede w13 Novice
11. juni 2007 - 11:28 #1
har du egen server eller hvor hostes din side?
Avatar billede mettecarsten Nybegynder
11. juni 2007 - 11:46 #2
Jeg kører webhotel hos 123hotel (en del af Wannafind.dk)
Avatar billede lund_dk Praktikant
11. juni 2007 - 11:50 #3
din 404 kan se sådan her ud

<%

Set rs= Conn.Execute("select * from brugere where brugernavn = '" & request.ServerVariables("HTTP_HOST") & request.ServerVariables("URL")  & "'")
if rs.eof or rsbof then
'bruger findes ikke, send til xx.asp side
else
'send bruger til indclude file
%>
<!--#include file="side.asp?id=<%=rs("id")%>" -->
<%
end if
rs.close
set rs = nothing
%>
Avatar billede lund_dk Praktikant
11. juni 2007 - 11:53 #4
men kræver at du hos wannafind selv kan styre hvad der skal vises ved en 404 fejl.. og det ved jeg ikke om man får lov hos dem.,
Avatar billede mettecarsten Nybegynder
11. juni 2007 - 12:03 #5
Lund_dk - kan godt hos wannafind.dk styre sin egen 404-side. Jeg har arbejdet lidt med din kode, men det går ikke så godt :-) Prøver at give dig min kode, så du måske kan hjælpe med lidt rettelser.

<%@ Language=VBScript %>
<%
Dim strSidenDerErKaldt
strSidenDerErKaldt = Split(Request.QueryString, ":80")(1)
%>

<!-- #include virtual="forb.asp"-->

<%

SQL = "Select * from Brugere Where Hjemmeside='" & strSidenDerErKaldt & "' OR Hjemmeside2='" & strSidenDerErKaldt & "'"

Set rs = Conn.Execute(SQL)

if rs.bof AND rs.eof then
Response.Redirect "fejl404.asp"
else

Session("Bruger") = rs("Id")

SQL2 = "Select * from Sider Where Bruger='" & rs("Id") & "' ORDER BY Nr"

Set rs2 = Conn.Execute(SQL2)

end if

if rs2.bof AND rs2.eof then
Response.Redirect "ingenside.asp"
end if

%>

<%

Response.Redirect "http://www.xxxxxxxxxxxxxx.dk/side.asp?Id=" & rs2("Id")

%>
Avatar billede mettecarsten Nybegynder
11. juni 2007 - 12:10 #6
Hvis jeg erstatter:

<%

Response.Redirect "http://www.xxxxxxxxxxxxxx.dk/side.asp?Id=" & rs2("Id")

%>

med

<!--#include file="kontakt.asp" -->

fungerer det fint, altså kommer til kontaktsiden. Hvordan indsættes Id=..... korrekt i en <!--#include file="xxxxx" -->?
Avatar billede lund_dk Praktikant
11. juni 2007 - 12:18 #7
Ah det er rigtigt, er svært at lave parameter på include, havde jeg ikke lige tænkt over..

Hvordan du ellers kan løse det, det ved jeg ikke helt så.. Måske med frames i stedet, hvis det er du vil beholde adresselinien..
Avatar billede lund_dk Praktikant
11. juni 2007 - 12:21 #8
<!--#include file="frameset.asp" -->

din frameset kan så således se sådan her ud:


<head>
<title>Untitled 2</title>
</head>

<frameset rows="0,*">
    <frame name="header" scrolling="no" noresize="noresize" target="main" src="blank.html">
    <frame name="main" src="<%=http://www.xxxxxxxxxxxxxx.dk/side.asp?Id=<%=rs2("Id")%>">
    <noframes>
    <body>

    <p>This page uses frames, but your browser doesn&#39;t support them.</p>

    </body>
    </noframes>
</frameset>

</html>
Avatar billede lund_dk Praktikant
11. juni 2007 - 12:22 #9
<frame name="main" src="<%=http://www.xxxxxxxxxxxxxx.dk/side.asp?Id=<%=rs2("Id")%>">
skal være
  <frame name="main" src="http://www.xxxxxxxxxxxxxx.dk/side.asp?Id=<%=rs2("Id")%>">
Avatar billede mettecarsten Nybegynder
11. juni 2007 - 12:29 #10
Jeg har overvejet frames, men er rigtig dårligt set i forhold til søgemaskinerne, så det er desværre ikke en mulighed. Ved du, om man med et asp-script automatisk kan oprette en asp-fil på serveren?
Avatar billede lund_dk Praktikant
11. juni 2007 - 12:45 #11
Det kan du godt..

Jeg bruger selv en ligende metode til et system, hvor jeg har en skabelonfil, jeg kopierer over i mine mapper oprettede mapper.

Og i dit tilfælde, kan du med FSO oprette en mappe, når brugeren opetter sig, kopiere skabelonfilen til mappen som default.asp


-- her mine metode --

Set FSO = Server.CreateObject("Scripting.FileSystemObject")
FSO.MoveFolder Server.MapPath("\" & rsButik("landekode") & "\" & rsButik("mappe") & ""), Server.MapPath("\" & request.form("landekode") & "\" & request.form("mappe") & "")
FSO.CopyFile Server.MapPath("\skabeloner\shopdefault.asp"), Server.MapPath("\" & request.form("landekode") & "\" & request.form("mappe") & "\default.asp")
set FSO = nothing
Avatar billede lund_dk Praktikant
11. juni 2007 - 12:46 #12
Det var den forkerte jeg fik fat i..


Her er dne korrekte

Set FSO = Server.CreateObject("Scripting.FileSystemObject")
FSO.CreateFolder(Server.MapPath("\" & request.form("landekode") & "\" & request.form("mappe") & ""))
FSO.CopyFile Server.MapPath("\skabeloner\shopdefault.asp"), Server.MapPath("\" & request.form("landekode") & "\" & request.form("mappe") & "\default.asp")
set FSO = nothing
Avatar billede mettecarsten Nybegynder
11. juni 2007 - 13:19 #13
Det løser mit problem, super. Tusind tak for hjælpen. Smid et svar og pointene er velfortjente.
Avatar billede lund_dk Praktikant
11. juni 2007 - 13:31 #14
Var så lidt..

eneste problem kan være, hvis den asp side du kopierer, skal laves om en dag, så skal du rette det på mange sider i alle mapper..

Det kan du dog løse ved at eks at have én fil hvor du styrer den default side, som kan hedde
include file="configdefault.asp
og din default.asp side du kopierer ind i hver mappe, der laver du bare en include til <!--#include file="configdefault.asp" -->

Så vil du femover kun skulle rette på den ene side du includrer..

håber det gav mening :)
Avatar billede mettecarsten Nybegynder
11. juni 2007 - 14:07 #15
Det giver fuld mening og sådan kommer det også til at køre. Tak for hjælpen.
Avatar billede lund_dk Praktikant
11. juni 2007 - 14:15 #16
Godt.. held og lykke :)
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