Tags
Forum
Artikler
Brugere
Stil spørgsmål
1
online
Login
Husk mig
Urlrewriting, problemer med billeder og css
Tags:
asp.net
<<
<
1
2
>
>>
Bruger #5789
@ 30.04.06 14:54
640
X Hey..
Jeg har forsøgt mig lidt frem med noget urlrewriting, det er også lykkedes mig at få det til at fungere, sammen med at rewrite action tagget på min form.
Problemet er bare, så længe jeg har aktiveret urlrewriting metoden, så ryger referencer til mine billeder, scripts, css, osv. aktiverer jeg det derimod, er det fint grafisk.. jeg har så forsøgt at ændre på stien til billederne og stylesheetet men det vil simpelthen ikke virke..
Her er lidt kode, beklager at der er lidt meget, men jeg ved ikke hvor fejlen opstår.
RewriteRules.Config
Et xml ark med regularexpressions, som laver de egentlige regler for urlrewritning metoden.
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<urlrewrites>
<rule name="ModulePage">
<url>/([a-zA-Z][\\w-]{1,149})/([a-zA-Z][\\w-]{1,149})\\.html</url>
<rewrite>/Default.aspx?ModuleName=$2</rewrite>
</rule>
<rule name="CategoryPage">
<url>/([a-zA-Z][\\w-]{1,149})/([a-zA-Z][\\w-]{1,149})/([a-zA-Z][\\w-]{1,149})\\.html</url>
<rewrite>/Default.aspx?ModuleName=$2&SubModuleName=$3</rewrite>
</rule>
<rule name="Item Page">
<url>/([a-zA-Z][\\w-]{1,149})/([a-zA-Z][\\w-]{1,149})/([a-zA-Z][\\w-]{1,149})/([a-zA-Z][\\w-]{1,149})\\.html</url>
<rewrite>/Default.aspx?ModuleName=$2&SubModuleName=$3&ItemName=$4</rewrite>
</rule>
</urlrewrites>
UrlRewriteModule.cs
public class UrlRewriteModule : IHttpModule, IRequiresSessionState
{
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(Rewrite_BeginRequest);
}
public void Rewrite_BeginRequest(object sender, EventArgs args)
{
string strPath = HttpContext.Current.Request.Url.AbsolutePath;
UrlRedirection oPR = new UrlRedirection();
string strURL = strPath;
string strRewrite = oPR.GetMatchingRewrite(strPath);
if (!String.IsNullOrEmpty(strRewrite))
{
strURL = strRewrite;
}
else
{
strURL = strPath;
}
HttpContext.Current.RewritePath("~" + strURL);
}
}
UrlRedirection.CS
public class UrlRedirection
{
XmlDocument oDoc = new XmlDocument();
private string strFile = System.Web.HttpContext.Current.Server.MapPath("~/RewriteRules.config");
private List<RedirectRule> colRules;
public List<RedirectRule> Rules
{
get
{
if (colRules == null)
{
colRules = GetRules();
}
return colRules;
}
}
List<RedirectRule> GetRules()
{
List<RedirectRule> col = new List<RedirectRule>();
XmlNode _oRules = oDoc.SelectSingleNode("//urlrewrites");
foreach (XmlNode oNode in _oRules.SelectNodes("rule"))
{
if ((oNode.SelectSingleNode("url/text()") != null) && (oNode.SelectSingleNode("rewrite/text()") != null))
{
RedirectRule oR = new RedirectRule();
oR.Name = oNode.Attributes["name"].Value;
oR.URL = oNode.SelectSingleNode("url/text()").Value;
oR.Rewrite = oNode.SelectSingleNode("rewrite/text()").Value;
col.Add(oR);
}
}
return col;
}
public string GetMatchingRewrite(string URL)
{
string strRtrn = "";
Regex oReg;
foreach (RedirectRule oRule in Rules)
{
oReg = new Regex(oRule.URL);
Match oMatch = oReg.Match(URL);
if (oMatch.Success)
{
strRtrn = oReg.Replace(URL, oRule.Rewrite);
}
}
return strRtrn;
}
public UrlRedirection()
{
oDoc.Load(strFile);
}
}
public class RedirectRule
{
string strUrl = "";
string strRewrite = "";
string strName = "";
public string Name
{
get { return strName; }
set { strName = value; }
}
public string URL
{
get { return strUrl; }
set { strUrl = value; }
}
public string Rewrite
{
get { return strRewrite; }
set { strRewrite = value; }
}
}
Hertil skal som nævnt siges jeg overskriver action tagget på min form, men uden det, virker billeder og css stadig ikke..
Er der nogen der kan sige hvad det er der går galt? Når urlrewriting er "on" .. kan jeg heller ikke direkte requeste stylesheetet eller billederne i min browser.. som om hvis ikke der rammes med en af de regularer expressions, så fungere det bare ikke..
Kan det have noget at gøre med at når jeg linker til et billede i min kode <img src="test.jpg"> så laver den et egentligt request til filen, og derved kører igennem min urlrewrite metode?
Håber nogen har et bud.
På forhånd tak
Jacob Jensen
12
svar postet i denne tråd vises herunder
1
indlæg har modtaget i alt
5
karma
Sorter efter stemmer
Sorter efter dato
0
Bruger #3491
@ 02.05.06 13:20
315
Jamen det var da godt
-
Jeg troede jeg havde lavet en af dem som svar, men den her er i hvert fald.
0
Bruger #5789
@ 02.05.06 21:08
640
Sorry, kan godt være du havde, jeg vidste ikke lige hvor den der "giv point" funktion var
<<
<
1
2
>
>>
Karma barometer (30 dage)
Modtaget
Givet
X
Favorit hos
Forum tråde
Artikler
Tilføj til dine favorit tags
Fjern fra dine favorit tags