it-swarm.com.de

Prozedur zum Umschreiben der URL

Ich habe Site-Namen wie http://www.abcd.com und auf der Site habe ich Property-Details-Seite. Jetzt möchte ich in URL http://www.abcd.com/hy2345 anstelle von http anzeigen: //www.abcd.com?propertydetails.aspx?id=hy2345

Ein weiteres Problem besteht darin, dass der Benutzer direkt http://www.abcd.com/hy2345 eingibt und so automatisch zur Seite mit den Eigenschaftendetails umleitet.

Danke im Voraus

3
user742558

Verwenden Sie MVC? In diesem Fall können Sie dieses Verhalten in der Datei global.asax konfigurieren.

1
WEFX

Das IIS URL Rewrite Tool macht dies wirklich einfach. Sie haben ein Beispiel , das fast identisch mit der Regel ist, die Sie erstellen müssten.

Hier ist, wie Sie es machen könnten. Die Art und Weise, wie Sie es angefordert haben, macht es schwierig, da es versuchen würde, jede Anfrage weiterzuleiten, sodass diese mit jeder URL übereinstimmt, die wie www.abcd.com/properties/hy2345 aussieht, aber Sie könnten den hy2345 abhängig von Ihrer ID leicht mit einem benutzerdefinierten Regex abgleichen Benennung der Geschäftslogik.

<rewrite>
  <rules>
    <rule name="Rewrite to article.aspx">
      <match url="^properties/([_0-9a-z-]+)/" />
      <action type="Rewrite" url="propertydetails.aspx?id={R:1}&amp;title={R:2}" />
    </rule>
  </rules>
</rewrite>
1
user978

Für IIS6 ist dies etwas schwieriger. ScottG hat einen Beitrag mit Ihren Optionen (siehe Abschnitt Ansatz 4). Eine andere Option ist rlRewriter.net oder Ionics Isapi Rewrite Filter .

1
user978

BEARBEITEN: Diese Methode erfordert die Erweiterung .aspx

Ich habe das kürzlich gemacht und es war überraschenderweise sehr einfach zu machen.

In meinem App_Data-Ordner habe ich eine XML-Datei wie die folgende:

<urlrewrites> 
  <rewrite url="/hy2345.aspx" to="~/propertydetails.aspx?id=hy2345" />
  <rewrite url="/hy2346.aspx" to="~/propertydetails.aspx?id=hy2346" />
</urlrewrites>

Und in meinem global.asax diese schnelle Routine:

void Application_Beginrequest(object sender, EventArgs e)
        {
            string ext = System.IO.Path.GetExtension(Context.Request.Path);
            if (ext != ".aspx")
            {
                return;
            }

            string root = Request.Url.GetLeftPart(UriPartial.Authority);
            string fullOriginalPath = Request.Url.ToString();
            string relativePath = fullOriginalPath.Replace(root, "");

            System.Xml.XmlDocument objXML = new System.Xml.XmlDocument();
            objXML.Load(Server.MapPath("~/App_Data/URLRewrites.xml"));

            foreach (System.Xml.XmlNode node in objXML.DocumentElement.ChildNodes)
            {
                if (node.Name.ToLower() == "rewrite")
                {
                    string url = node.Attributes.GetNamedItem("url").Value.ToString();
                    if (relativePath.ToLower() == url.ToLower())
                    {
                        string to = node.Attributes.GetNamedItem("to").Value.ToString();
                        Context.RewritePath(to);
                        break;
                    }
                }
            }
        }

Wenn Ihre Seite Postbacks verarbeitet, müssen Sie den Formularbrowser yadda from here implementieren, da ein Postback die ungeschriebene URL offenlegt.

0
plntxt