RewritePath מתנהג כמו Redirect!
יש לי אתר ASP.net, שאני מעוניינת להפוך את כתובות ה-URL המגיעות ממנו ל-Search Engine Friendy. בכל הדוגמאות שמצאתי שמדברות על הנושא, הדרך הבסיסית היא שימוש בפונקציה RewritePath של המחלקה HttpContext. הפונקציה אמורה "לזייף" את ה-url address של ה-Request כך שאפילו שכתובת העמוד האמיתית היא www.mysite.com/mypage.aspx?category=1&product=2 מה שהמשתמש יראה יהיה www.mysite.com/categoryname/productname.html. השימוש בפונקציה אמור באופן בסיסי להיות דרך ה-Global.asax בארוע Application_BeginRequest. הכנתי לצורך הניסוי דוגמא פשוטה מאוד, בה עבור כל request שמתקבל יתבצע RewritePath לעמוד ספציפי. קיבלתי שגיאה - אני מצרפת צילום מסך, ולא ברור לי מדוע זה קורה.
יש לי אתר ASP.net, שאני מעוניינת להפוך את כתובות ה-URL המגיעות ממנו ל-Search Engine Friendy. בכל הדוגמאות שמצאתי שמדברות על הנושא, הדרך הבסיסית היא שימוש בפונקציה RewritePath של המחלקה HttpContext. הפונקציה אמורה "לזייף" את ה-url address של ה-Request כך שאפילו שכתובת העמוד האמיתית היא www.mysite.com/mypage.aspx?category=1&product=2 מה שהמשתמש יראה יהיה www.mysite.com/categoryname/productname.html. השימוש בפונקציה אמור באופן בסיסי להיות דרך ה-Global.asax בארוע Application_BeginRequest. הכנתי לצורך הניסוי דוגמא פשוטה מאוד, בה עבור כל request שמתקבל יתבצע RewritePath לעמוד ספציפי. קיבלתי שגיאה - אני מצרפת צילום מסך, ולא ברור לי מדוע זה קורה.
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs) ' Fires at the beginning of each request Dim Incoming As HttpContext = HttpContext.Current Dim strCurrentPath As String Dim strCustomPath As String strCurrentPath = Incoming.Request.Path strCurrentPath = strCurrentPath.ToLower() strCustomPath = "yyy.aspx" 'rewrite the URL Incoming.RewritePath(strCustomPath) End Sub
אולי כדאי להעיר שבMSDN כתוב לגבי הפונקציה RewritePath: RewritePath is used in cookieless session state. האם זו הבעיה שלי?