|
| 404-error-page som fange den efterspurgte ~ Fra : Martin Sand |
Dato : 23-09-09 14:55 |
|
Hej Alle!
Jeg har en hjemmeside hvor jeg indtil nu kun har kørt
ikke-dynamiske sider. Altså siderne havde hver deres
fil(asp/html), til at ligge i et heraki. f.eks:
http://www.martinsand.dk/mappe/mappe/fil
Nu er jeg så begyndt at lege med tanken om at lave mit eget lille
cms hvor jeg vil hente sidernes indhold fra en database.
Jeg har så fået den tanke om det var muligt at på en 404-error
side, at detektere, hvilken url, man spurgte efter? For så ville
jeg jo kunne lave mit site både med filer i hiraki og hvis ikke
de findes, så ville man kunne slå op i en database i
404.asp-siden.
så jeg ville kunne tilgå sider fra database sådan:
http://www.martinsand.dk/navn/navn/side . hvor "navn/navn/side"
så ville kunne slåes op i databasen og hente indhold den vej.
Så mit endelige spørgsmål er hvordan jeg fanger den efterspurgte
url på en 404 side?
MVH Martin Sand Nielsen
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Stig Johansen (23-09-2009)
| Kommentar Fra : Stig Johansen |
Dato : 23-09-09 18:09 |
|
Martin Sand wrote:
> Nu er jeg så begyndt at lege med tanken om at lave mit eget lille
> cms hvor jeg vil hente sidernes indhold fra en database.
>
> Jeg har så fået den tanke om det var muligt at på en 404-error
> side, at detektere, hvilken url, man spurgte efter? For så ville
> jeg jo kunne lave mit site både med filer i hiraki og hvis ikke
> de findes, så ville man kunne slå op i en database i
> 404.asp-siden.
>
> så jeg ville kunne tilgå sider fra database sådan:
> http://www.martinsand.dk/navn/navn/side . hvor "navn/navn/side"
> så ville kunne slåes op i databasen og hente indhold den vej.
>
> Så mit endelige spørgsmål er hvordan jeg fanger den efterspurgte
> url på en 404 side?
Det kan man godt, men det kræver adgang til opsætning af serveren, som du
nok ikke har mulighed for hos one.com.
Du tænker nok på URL rewriting, hvor URL'en bliver oversat til et, for
serveren, forståeligt format, men her kræver det også et (ISAPI) plugin, på
samme måde som mod_rewrite til Apache.
Der var vist engang hvor søgemaskiner ikke fulgte den fulde URI, men det er
vist fra sidste årtusinde.
Du kan i stedet lave et cms, hvor du eksempelvis bruger:
http://www.martinsand.dk/cms.asp?subject=navn/navn/side
--
Med venlig hilsen
Stig Johansen
| |
Martin Sand (24-09-2009)
| Kommentar Fra : Martin Sand |
Dato : 24-09-09 13:07 |
|
> Det kan man godt, men det kræver adgang til opsætning af serveren, som du
> nok ikke har mulighed for hos one.com.
Hos One.com kan jeg bruge apache's modRewrite, og det er da også i apaches
..htaccess-fil, at jeg kan angive hvilken side der skal være 404-error-page.
Men det smarte ved at kunne bruge 404 ville jeg være at jeg både kunne have
faktiske filer i hieraki, og hvis ikke det findes, så bliver der søgt i en
database...
Så man kan ikke på en asp side se hvilken side den er "sendt fra" eller
noget i den stil. Enten hvilken url, der sidst blev åbnet, eller hvilken
url, der står i browserens adressbar..?
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Leif Neland (24-09-2009)
| Kommentar Fra : Leif Neland |
Dato : 24-09-09 17:12 |
|
Martin Sand skrev:
>> Det kan man godt, men det kræver adgang til opsætning af serveren, som du
>> nok ikke har mulighed for hos one.com.
>
> Hos One.com kan jeg bruge apache's modRewrite, og det er da også i apaches
> .htaccess-fil, at jeg kan angive hvilken side der skal være 404-error-page.
Når du skriver i asp-gruppen, så er det logisk at regne med at du kører
asp på IIS.
Så kræver det, at en administrator går ind via et gui, og sætter en
custom 404-side op; IIS kender ikke til .htaccess. Det vil sikkert koste
dig penge...
Havde du i stedet for en proprietær webserver valgt at køre på et
webhotel, der bruger en standard-webserver som Apache, ville du selv
kunne have lavet en custom 404-handler.
> Men det smarte ved at kunne bruge 404 ville jeg være at jeg både kunne have
> faktiske filer i hieraki, og hvis ikke det findes, så bliver der søgt i en
> database...
Det er helt korrekt.
> Så man kan ikke på en asp side se hvilken side den er "sendt fra" eller
> noget i den stil. Enten hvilken url, der sidst blev åbnet, eller hvilken
> url, der står i browserens adressbar..?
>
Den url, brugeren ville have haft, kan 404-handleren hente i
request.querystring.
Og der fås en normal Request.ServerVariables("HTTP_REFERER")
404-siden kan hente siden fra databasen og vise den for brugeren, og
URL'en ændrer sig ikke, så brugeren opdager ikke, at siden ikke findes
"i virkeligheden"
Leif
| |
Martin Sand (01-10-2009)
| Kommentar Fra : Martin Sand |
Dato : 01-10-09 19:12 |
|
> Når du skriver i asp-gruppen, så er det logisk at regne med at du kører
> asp på IIS.
> Så kræver det, at en administrator går ind via et gui, og sætter en
> custom 404-side op; IIS kender ikke til .htaccess. Det vil sikkert koste
> dig penge...
Jeg har nettop en apache server hos one.com, som kan køre asp...
Jeg kan bruge .htacces filen, det jeg skriver deri virker ihvertfald :)
Her er koden jeg har i den:
----
RewriteEngine On
RewriteCond %{HTTP_HOST} !^ www.martinsand.dk$ [NC]
RewriteRule ^(.*)$ http://www.martinsand.dk/$1 [R]
ErrorDocument 403 /404.asp
ErrorDocument 404 /404.asp
----
Den åbner også 404.asp hvis jeg efterspørger en ikke eksisterende side. Men
hvilken kode vil I mene, at jeg bør have på 404.asp, for at fange hvilken url
"der ikke fandtes i første omgang" ?
MVH
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Stig Johansen (02-10-2009)
| Kommentar Fra : Stig Johansen |
Dato : 02-10-09 01:44 |
|
"Martin Sand" <martin.sand.nielsen@hotmail.com> wrote in message
news:4ac4f108$0$281$14726298@news.sunsite.dk...
>
> Den åbner også 404.asp hvis jeg efterspørger en ikke eksisterende side.
Men
> hvilken kode vil I mene, at jeg bør have på 404.asp, for at fange hvilken
url
> "der ikke fandtes i første omgang" ?
Som Leif skriver, så ligger det i request.querystring (på IIS).
Jeg har et lille 'info' program jeg bruger til at finde ud af den slags.
Her er det essentielle af koden:
.....
<h4>Request.Form section</h4>
<p><table><tr><th>Form Variable</th><th>Value</th></tr><%
Dim Item
For Each Item In Request.Form
%><tr><td><%= Item %></td><td><%= Request.Form(Item) %> </td></tr><%
Next
%></table></p>
<hr/>
<h4>Request.QueryString section</h4>
<p><table><tr><th>QueryString Variable</th><th>Value</th></tr><%
For Each Item In Request.QueryString
%><tr><td><%= Item %></td><td><%= Request.QueryString(Item)
%> </td></tr><%
Next
%></table></p>
<hr/>
<h4>Request.ServerVariables section</h4>
<p><table><tr><th>Server Variable</th><th>Value</th></tr><%
For Each Item In Request.ServerVariables
%><tr><td><%= Item %></td><td><%= Request.ServerVariables(Item)
%> </td></tr><%
Next
%></table></p>
.....
Prøv at lægge det ind i din 404 side og se om der er noget du kan bruge.
Det er ikke sikkert du får samme informationer som IIS giver.
--
Med venlig hilsen/Best regards
Stig Johansen
| |
Stig Johansen (24-09-2009)
| Kommentar Fra : Stig Johansen |
Dato : 24-09-09 19:15 |
|
Martin Sand wrote:
> Men det smarte ved at kunne bruge 404 ville jeg være at jeg både kunne
> have faktiske filer i hieraki, og hvis ikke det findes, så bliver der søgt
> i en database...
Det kan du også med den metode jeg skrev.
Så skal du bare lave noget pseudokode a la:
if fileexists(navn.fra.url.) then
udskriv fil
else
kig i database
end if
--
Med venlig hilsen
Stig Johansen
| |
|
|