سؤال

كنت أرغب في معرفة ما إذا كان هناك حل باستخدام IIS6 لأحد التطبيقات للتخلص من النص default.aspx في عنوان url.لذلك على سبيل المثال إذا قام المستخدم بالنقر على:

www.website.com/default.aspx

المتصفح يظهر فقط:

www.website.com/

بغض النظر.انها مجرد لكبار المسئولين الاقتصاديين.

أنا بالفعل أستخدم UrlRewriting.NET لبعض عمليات إعادة الكتابة في تطبيقي ولكني لست ذكيًا في إنشاء قاعدة لذلك.

أي مساعدة موضع تقدير كبير.

شكرًا.خوسيه

هل كانت مفيدة؟

المحلول

إذا كان لديك شيء تقوم بإعادة كتابة عنوان URL ، فكل ما تحتاجه للقيام به ضمان أن روابطك تشير إلى عنوان URL الصحيح.

إذا لم تقم بإصلاح الروابط الخاصة بك ، فإن الأمر متروك للمتصفح لتحديد ما إذا كان يريد عرض الرابط الفعلي الذي طلبه.

إذا كنت ترغب حقًا في القيام بعمل مراوغ ، فيمكنك استخدام بعض JavaScript لجعل شريط العناوين للمتصفح يعرض كل ما تريد ، حتى لو كان غير صالح.

نصائح أخرى

أعتقد أن Scottgu لديه بالفعل موضوع إعادة الكتابة في Asp.net المغطاة: http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx.

يغطي أشياء مثل:

  • إعادة الكتابة باستخدام urlrewriter.net ، isapi rewrite
  • حيل ASP.NET ، بعد النشر (ضرب النسخة الودية من عنوان URL)

مع مشكلتك ، أعتقد أنك بحاجة إلى استخدام مزيج من ، وعدم الارتباط أبدًا بـ "default.aspx" أي. رابط فقط إلى '/'. ثم استخدم ملف متصفح Postback Portback الخاص بـ Scott لضمان ضربات Postback دائمًا هذا الإصدار الودي من عنوان URL.

إعادة توجيه "default.aspx" إلى "/" ، والتي يتم تقديمها بعد ذلك بواسطة "default.aspx" يبدو وكأنه وصفة لكارثة بالنسبة لي. فقط قم بإصلاح الروابط الخاصة بك للتأكد من أنك لا تنتهي أبدًا على "default.aspx" بشكل صريح.

أعتقد أن أبسط طريقة لتغيير مؤشر نتائج البحث (على افتراض أنه يعرف عن HTTP 301) هي كتابة وظيفة صغيرة في page_aspx الخاصة بك التي تعيد توجيه المتصفح باستخدام 301 تم نقلها بشكل دائم (أو 302 تم نقلها مؤقتًا).

void Page_Load(...) {

    if(Request.Path.EndsWith("default.aspx", true/*case-insensitive*/, null)) {
       Response.StatusCode = 301;
       Response.StatusDescription = "Moved Permanently";
       Response.Headers.Add("Location", "/");
       HttpContext.Current.ApplicationInstance.CompleteRequest(); // end the request
    }

    // do normal stuff here
}

إذا تم تعيين default.aspx كمستند افتراضي للعرض في IIS، وكانت جميع روابط موقعك الداخلية تحتوي على عناوين URL بدون default.aspx فأعتقد أن هذا يجب أن يفي بالغرض.

على الرغم من أنه لا يزال بإمكان المستخدم الكتابة default.aspx, ، يجب على عناكب محركات البحث فقط التقاط عناوين URL الأكثر ودية من سمات href للرابط الخاص بك.

الطريقة التي سأفعل بها هي استخدام application_beginrequest في الطبقة العامة العالمية: system.web.httpapplication والتحقق من httpcontext.current.request.url for default.aspx ، ثم استخدم httpcontext.current.response.redirect من هناك إذا كنت تجد هناك إذا كنت تجد هناك هو - هي.

الجانب السلبي هو إعادة التوجيه ليس دائمًا رائعًا جدًا ، وهذا لن يعمل إذا كنت تقوم بنشر بيانات إلى صفحة الافتراضية. aspx. ولكن لا يمكنك ببساطة خداع المتصفح لإظهار عنوان URL مختلف ، على الرغم من أنه يمكنك إخبار ASP.NET بخدمة أي صفحة تريد أي طلب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top