Hej snepnet, jeg kan desværre ikke slippe afsted med at bruge 2.0.. Og det første link du sendte har jeg læst igennem før. Da forsøgte jeg med at lave det blog-eksempel de kommer med til sidst, men det fejlede. Og grunden til at det fejlede var så vidt jeg kunne forstå noget med at jeg skulle lave noget ved mine IIS indstillinger. Kan naturligvis godt være jeg tager fejl :)
Hvis jeg nu sætter nogle flere point af til dig, kunne du så ikke klippe/klistre de relevante ud fra artiklen, så de danner et bæredygtigt eksempel?..
fidusen er så, at du i din rewriter kan checke på den originale url (du kan få fat i den med HttpContext.Current.Request.Path), og får du eksempelvis sådan en her :
hvis du ikke har mulighed for at pille ved din iis - kan du kun gøre det for filtyper der af iis'en eksekveres af aspnet isapi'en - ellers vil koden ikke blive kørt (hvis du f.eks. prøver med extension .html).
håber det er bedre end ingenting, og at du har lidt at gå videre med.
du må undskyld at jeg ikke svarer - jeg får ingen expmails :o(
eksemplet gør ikke andet end at lave en RewritePath(...), hvilket medfører at brugeren sådan set bliver stillet hen til en side udfra hvad de "Rewriter" den til - uden at adresse i adressebaren ændrer sig.
du kan sagtens bruge konfigurationsfilen til det - det er helt normalt at gøre det sådan, og det er også sådan det er lavet i ASP.NET 2.0.
du skal dog stadig selv lave din logik.... der er et andet eksempel der - det er sådan lidt mere direkte.... du kan prøve at se om det er lidt mere forklarende end det hos ms.
Men hvis jeg går ind på mit site, så står der ikke webform1.aspx som jeg forventede.. Har jeg misforstået hvad det første eksempel gør?.. Og hvordan laver jeg min logik, hvis jeg vil bruge web.config'en til det?..
man kan jo sige at logikken er valgfri.... hvis du har lyst til at lave links der hedder noget med tal til sidst, og rewriter til noget med ?id=<tallet> er det den logik du skal lave... det er rigtig noget jeg kan hjælpe dig med, da jeg ikke ved hvordan du synes linksne skal se ud for brugeren, og hvad de skal rewrites til.
for øvrigt .... det link jeg refererede til 13/05-2005 02:03:41 er det her : http://www.codeproject.com/aspnet/urlrewriter.asp (undskyld jeg glemte at sende det med .... de sidste par linier må have virket lidt besynderlige uden linket :o)
Hvis jeg laver min web.config om så der kun står (taget fra codeproject): <configuration> <system.web> <urlrewrites> <rule> <url>/urlrewriter/show\.asp</url> <rewrite>show.aspx</rewrite> </rule> <rule> <url>/urlrewriter/wohs\.asp</url> <rewrite>show.aspx</rewrite> </rule> <rule> <url>/urlrewriter/show(.*)\.asp</url> <rewrite>show.aspx?$1</rewrite> </rule> <rule> <url>/urlrewriter/(.*)show\.html</url> <rewrite>show.aspx?id=$1&cat=2</rewrite> </rule> <rule> <url>/urlrewriter/s/h/o/w/(.*)\.html</url> <rewrite>/urlrewriter/show.aspx?id=$1</rewrite> </rule> </urlrewrites> </system.web> </configuration>
så vidt jeg lige ummiddelbart kan se har du heller ikke nogen mapning på aspx-filer... ingen af de filtyper der er listen i den konfiguration du har sendt vil pr. default komme forbi .net eksekveringen (det er det du skal pille i iis'en for at få til at ske). men æhh... hvilken fejl får du ? mvh
FEJL :::: Server Error in '/' Application. Runtime Error Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".
Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.
En meget generic fejl. Men jeg problemet er at det er web.config-filen der forudsager fejlen, og jeg bruger slet ikke rewriteRules i global.asax endnu.. Der skriver den stadig bare om til webform1.aspx.
Ja den ligger i roden.. Dette giver en fejl: <configuration> <system.web> <customErrors mode="Off"/> <compilation debug="true"/> <trace enabled="true" pageOutput="true" /> <urlrewrites> <rule> <url>/urlrewriter/show\.asp</url> <rewrite>show.aspx</rewrite> </rule> <rule> <url>/urlrewriter/wohs\.asp</url> <rewrite>show.aspx</rewrite> </rule> <rule> <url>/urlrewriter/show(.*)\.asp</url> <rewrite>show.aspx?$1</rewrite> </rule> <rule> <url>/urlrewriter/(.*)show\.html</url> <rewrite>show.aspx?id=$1&cat=2</rewrite> </rule> <rule> <url>/urlrewriter/s/h/o/w/(.*)\.html</url> <rewrite>/urlrewriter/show.aspx?id=$1</rewrite> </rule> </urlrewrites> </system.web> </configuration>
Dette giver ikke en fejl: <configuration> <system.web> <customErrors mode="Off"/> <compilation debug="true"/> <trace enabled="true" pageOutput="true" /> </system.web> </configuration>
Og det her giver også en fejl: <configuration> <system.web> <customErrors mode="Off"/> <compilation debug="true"/> <trace enabled="true" pageOutput="true" /> <urlrewrites> <rule> <url>default.aspx</url> <rewrite>default2.aspx</rewrite> </rule> </urlrewrites> </system.web> </configuration>
men uf... jeg er en klaphat til regulære udtryk :o( har du prøvet "the regulator" ? (http://sourceforge.net/projects/regulator/) - den er for lækker til at arbejde med den slag i :oP)
Ved ikke om det har noget med regex at gøre, men når jeg bruger: <rule> <url>/(aspnet|php)/</url> <rewrite>/$1.aspx</rewrite> </rule> localhost/aspnet/ skulle blive localhost/aspnet.aspx , men bliver istedet localhost/aspnet/aspnet.aspxDefault.aspx
Hvordan får jeg den til at holde op med at putte default.aspx på og holde op med tage den oprindelige url med?..
To ændringer og den opfører sig jeg ville have.. :) <rule> <url>/(aspnet|php)/(default.aspx)</url> <rewrite>/$1.aspx</rewrite> </rule> og public string GetSubstitution(string zPath) { Regex oReg; foreach(XmlNode oNode in _oRules.SelectNodes("rule")) { oReg=new Regex(oNode.SelectSingleNode("url/text()").Value, RegexOptions.IgnoreCase); Match oMatch=oReg.Match(zPath); if(oMatch.Success) { return oReg.Replace(zPath,oNode.SelectSingleNode("rewrite/text()").Value); } } return zPath; }
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.