Jag har knåpat ihop en URL rewriter och då jag inte kan fixa det redan i IIS så använder jag mig av 404-sidan för att skicka användaren vidare till rätt sida. Så här sent på kvällen undrar jag om inte server.execute gör det du vill... Konstigt. En sätt vore att spara undan QueryStringen i en Session(), men det känns inte som en bra lösning. Blir osäker om jag har missförstått dig men kolla på detta om det kan hjälpa något... Du har förstått fel. Ungefär så där har jag redan, men jag vill inte ha adresser som http://www.domän.com/?page=admin&do=news utan vill kunna använda mig av http://www.domän.com/page/admin/do/news som ska vara mer sökmotorvänligt. Nej, då får man felet "An invalid character was specified in the Path parameter for the MapPath method.". Ja det är mycket möjligt. Har inte använt mig av ASP.NET (vilket är lite synd, då det hade löst det här problemet). lagra alla querystring variabler i sessions.. och använd dom - kanske en ful genväg men.. Som jag skrev tidigare så känns Session-lösningen inte som en bra lösning. Går det inte på nått annat sätt?URL rewriter
Om användaren går till http://www.domän.com/abc/123 så skickas han vidare till http://www.domän.com/?abc=123.
Det jag nu funderar på är om man kan skicka ut innehållet för http://www.domän.com/?abc=123 istället för att redirecta användaren dit, så att det är den adress man besöker som står i webbläsaren.
Jag har försökt med Server.Transfer men det ville inte fungera.
Några tips?
Koden:
<code>
URL = LCase(Request.ServerVariables("QUERY_STRING"))
URL = Mid(URL, InStr(URL, "domän.com"))
URL = Mid(URL, InStr(URL, "/") +1)
Target = ""
Value = False
Do Until URL = ""
If InStr(URL, "/") > 0 Then
Part = Left(URL, InStr(URL, "/") -1)
URL = Mid(URL, InStr(URL, "/") +1)
Else
Part = URL
URL = ""
End If
Target = Target & Part
If Value = False Then
Target = Target & "="
Else
Target = Target & "&"
End If
Value = Value = False
Loop
Target = Left(Target, Len(Target) -1)
Response.Redirect "/?" & Target
</code>
ThomasSv: URL rewriter
.ÖSv: URL rewriter
Minns att det var nått bök, men vet också att jag har det fungerade på en sajt i alla fall.
.ÖSv:URL rewriter
Det skulle uppskattas om du kunde kolla hur du löste det på din sida.
ThomasSv: URL rewriter
<%Option Explicit%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" language="JavaScript" src="/js/functions.js"></script>
<title> Page</title>
</head>
<%
Dim strPage, strPagePath
Const strRootPath = "/"
' Set the path to the public pages
strPagePath = "pages/"
'Check page
strPage = cstr(Request.Querystring("Page"))
If strPage = "" Then ' No page selected, use MAIN
strPage = "Main"
Elseif strPage = "Admin" Then ' Admin page selected, change strPagePath
' Check what to do
strPage = cstr(Request.Querystring("Do"))
' Set PagePath to admin folder
strPagePath = "_admin/"
End If
Response.Write("<body>" & VbCrLf) 'writing HTML...
%>
<table class="ContentTable" cellspacing="0" cellpadding="0">
<tr>
<td class="ContentItem">
<!-- Start Content -->
<% 'Response.Write "Loading: " & strRootPath & "pages/" & strPage & ".htm<hr>"
Server.Execute strRootPath & strPagePath & strPage & ".asp"
%>
<!-- End Content -->
</td>
</tr>
</table>
</body>
</html>
Å en länk kan se ut så här:
http://sajten.se/?Page=Admin&Do=News&Action=NewsInfo&ID=13
Vilket gör att server.execute kör filen news.asp i mappen admin med dessa värden "&Action=NewsInfo&ID=13"
.Ö
Sv:URL rewriter
Koden som jag skrev i första inlägget gör så att man kan använda sig av den sökmotorvänliga adressen, men man skickas vidare till den riktiga adressen.
Det jag vill få till nu är att man besöker den sökmotorvänliga adressen och förblir kvar på den adressen. Servern ska alltså själv ta reda den riktiga adressen och bara skicka ut innehållet istället för att skicka vidare användaren. Ungefär som Server.Transfer borde fungera, men nu klarar den inte av QueryStrings.
ThomasSv:URL rewriter
Dock så kan man hämta querystringen från huvud-sidan även från sidan som man executar. Det är kanske det du tänker på?
ThomasSv:URL rewriter
ThomasSv: URL rewriter
Sv:URL rewriter
Thomas