Avatar billede whitestone Nybegynder
07. januar 2005 - 18:24 Der er 11 kommentarer og
2 løsninger

Omskrive et asp-id-link til et html-link og omvendt i adressefelt

Hej

Hvordan kan man omskrive et asp-id-link til et html-link og omvendt i browserens adresse felt.


F.eks så hedder min start side
"Home" http://www.xxxx.dk/default.asp?active_page_id=1

og den vil jeg gerne have vist som
http://www.xxxx.dk/

start siden "Home" har nogle undermenuer f.eks
"webhotel" http://www.xxxx.dk/default.asp?active_page_id=63
og
"Kontakt" http://www.xxxx.dk/default.asp?active_page_id=13

og dem vil jeg gerne have vist som hhv.
http://www.xxxx.dk/webhotel
og
http://www.xxxx.dk/kontakt

siden "webhotel" har f.eks undermenuen
"priser" http://www.xxxx.dk/default.asp?active_page_id=44

og den vil jeg gerne have vist som
http://www.xxxx.dk/webhotel/priser

siden "priser" har f.eks undermenuen
"Linux" http://www.xxxx.dk/default.asp?active_page_id=40

og den vil jeg gerne have vist som
http://www.xxxx.dk/webhotel/priser/Linux

og omvendt hvis man f.eks skriver
http://www.xxxx.dk/webhotel/priser i browswrens adresse felt

så får man siden som ligger på databasens
http://www.xxxx.dk/default.asp?active_page_id=44
Avatar billede thesurfer Nybegynder
07. januar 2005 - 18:27 #1
I din "default.asp" har du noget kode, der aflæser "active_page_id", og derefter henter (på en eller anden måde) den rette side.

Du kan bare oprette de mapper, som skal være efter ".dk/". Så skal du bare flytte "index" siden, til hver mappe.
Avatar billede thesurfer Nybegynder
07. januar 2005 - 18:30 #2
Altså, opret mapperne:
/webhotel
/webhotel/priser
/webhotel/priser/linux
/kontakt

osv..

Den side man normalt ser, når man bruger "active_page_id=..", flyttes til de respektive mapper..

F.eks., flyttes "id=40" til "/webhotel/priser/linux", og skal bare hedde "default.asp".. så loades den automatisk.
Avatar billede whitestone Nybegynder
07. januar 2005 - 18:49 #3
Alle siderne ligger i en MSAccess database så det skal "bare" se ud som om af hensyn til søgemaskiner mm.

Men måske er du inde på noget af det rigtige hvis man oprette mapperne og en default.asp samtidig med at asp-siderne oprettes som indeholder linket til "active_page_id=.."

men der må være en smarter måde vha. ASP/JAVA scripting eller lign.
Avatar billede tjaz Nybegynder
08. januar 2005 - 01:15 #4
default.asp i mappen /webhotel

<html>
<head>
<title>xx.dk - Webhotel</title>
</head>
<frameset rows="0,*" frameborder="NO" border="0" framespacing="0">
  <frame src="about:blank" name="" scrolling="NO" noresize >
  <frame src="../default.asp?active_page_id=44" name="main">
</frameset>
<noframes><body>

</body></noframes>
</html>

vil loade din side
Avatar billede tjaz Nybegynder
08. januar 2005 - 01:49 #5
du kan også lave en default.asp i mappen webhotel som ser sådan her ud:

<%
if left(Request.ServerVariables("PATH_INFO"), 10) = "/webhotel/" then
response.redirect("../default.asp?active_page_id=44")
end if
%>
Avatar billede tjaz Nybegynder
08. januar 2005 - 01:50 #6
evt...

<%
if left(Request.ServerVariables("PATH_INFO"), 10) = "/webhotel/" then
response.redirect("../?active_page_id=44")
end if
%>

;) - ser lidt bedre ud :D
Avatar billede tjaz Nybegynder
08. januar 2005 - 01:57 #7
Faktisk ville det nok se bedre ud hvis du lavede den sådan her:

<%
'Her retter du mappens navn
mappe = "/kontakt/"
'Her rette du den url som den skal gå til
url = "../?active_page_id=13"
'Her finder den ud af længden på variablen mappe
tegn = Len(mappe)

'Scriptet som finder ud af at der skal viderestilles i mappen hvor default.asp
if left(Request.ServerVariables("PATH_INFO"), tegn) = mappe then
response.redirect(url)
end if
%>
Avatar billede tjaz Nybegynder
08. januar 2005 - 01:58 #8
Så er du fri for selv at tælle antallet af tegn i navnet på den mappe + de 2 / ... dovenskaben længe leve :D
Avatar billede thesurfer Nybegynder
08. januar 2005 - 05:18 #9
<%

' 1) Gem denne kode i en fil, der ligger i roden (f.eks. "/loader.asp")
' 2) Opret alle mapper, og opret en "index.asp" i alle mapperne
' 3) Indsæt denne linie i alle "index.asp" filerne:
'    <!-- #include file="/loader.asp" -->
'
' Nu skulle den gerne (automatisk) hente "?active_page_id=xx" fra databasen,
' selvom man kun skriver "http://www.xxxx.dk/webhotel"
'
'
' Selve koden:

option explicit
dim path, url
path = left(Request.ServerVariables("PATH_INFO"), instrrev(Request.ServerVariables("PATH_INFO"), "/") - 1)

Select Case LCase(path)

' LCase sammenligner "små bogstaver"!
' Dvs, "xxx" i Case "xxx" skal stå med småt!

Case "/webhotel"
  url = "/default.asp?active_page_id=63"

Case "/webhotel/priser/linux"
  url = "/default.asp?active_page_id=40"

' Osv med alle de andre....
End Select

Server.Execute (url) ' afvikler "active_page_id=xx"-urlen
%>
Avatar billede whitestone Nybegynder
09. januar 2005 - 11:41 #10
Jeg har ikke fået endelig tjekket on en eller begge af jeres forslag virker.

Men det sidste som mangler at komme på plads, er at det indgår i et CMS systen og derfor skal være fleksibel / generel.

Jeg har følgende fra databasen som bestemmer menu placeringen.

page_id, parent_page_id, title og pos
Avatar billede jesperfjoelner Nybegynder
09. januar 2005 - 16:23 #11
Hej Whitestone,
Så vidt jeg kan se vil de par forslag du har fået måske virke hvis de har et begrænset antal mapper til /webhotel /linux osv. men hvis du skal undgå at oprette "dummy"-mapper og en masse redirecting skal du vist bruge en af disse løsninger, som gør det dynamisk og uandset hvad der kommer fra url'en.
til windows-servere:
http://www.motobit.com/help/url-replacer-rewriter/iis-mod-rewrite.asp
Apache-servere har det der hedder mod_rewrite som gør det automatisk.
Prøv at søge på det i google. Det hele selvfølgelig med det formål at siderne kan findes af søgemaskinerne. Google indekserer dog dynamiske sider, men mange gør ikke.
Jeg er selv på et windowshotel og min udbyder har ikke et URL-replacer ISAPI-filter installeret, så jeg tænker lidt over hvad jeg skal gøre, men hvis du er på en apache-server er det vist mod_rewrite der skal til.
Her et andet værktøj:
http://www.webmaster-toolkit.com/mod_rewrite-rewriterule-generator.shtml
Avatar billede whitestone Nybegynder
09. januar 2005 - 19:10 #12
Hej Hippokrates

Du har ret i at det er den stil jeg er ude efter, men jeg har ikke rådighed over selve serversoftwaren
Avatar billede whitestone Nybegynder
16. januar 2005 - 10:56 #13
Hej tjaz

Burde din kode ikke virke uden at man opretter mapperne men kun har linket?

Har du evt. et eksempel hvor det virker ?
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