كيف يمكنني تحديد ما إذا كان asp.net url تم "إعادة كتابة"?

StackOverflow https://stackoverflow.com/questions/259147

  •  06-07-2019
  •  | 
  •  

سؤال

أنا باستخدام http://urlrewriter.net/ إلى إعادة كتابة عناوين المواقع في موقع الويب الخاص بي.على سبيل المثال, أنا كتابة:

http://www.example.com/schedule.aspx?state=ca

إلى

http://www.example.com/california.aspx

ما أحاول القيام به (لأغراض كبار المسئولين الاقتصاديين) بشكل حيوي إضافة meta:

<meta name="robots" content="noindex,follow" />

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

كيف يمكنني تحديد أي إصدار من الصفحة المطلوبة ؟

تحرير

الإجابات أدناه تشير إلى توجيه 301 بدلا من استخدام العلامة الوصفية.ربما سأفعل هذا, ولكن أنا لا تزال تريد أن تعرف الإجابة على السؤال الأساسي...كيف أعرف إذا كانت الصفحة قد تم إعادة كتابة?

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

المحلول

شخصيا, وأود أن 301 إعادة توجيه من برنامج الأمم المتحدة إعادة كتابة واحدة إلى إعادة كتابة واحدة فقط استخدام نسخة واحدة من الصفحة.فمن الأسهل بالنسبة للمستخدمين ، من وجهة نظر كبار المسئولين الاقتصاديين ، لديك 1 نسخة من المحتوى.

نصائح أخرى

إذا كنت في حاجة للقيام بذلك ربما يمكنك أن تفعل شيئا مثل:

<add header="X-WasRewritten" value="true" />

يمكنك التحقق من رأس في عرض وإضافة العلامة الوصفية لبرامج الروبوت إذا كنت في حاجة إليها.

هذا سوف تحصل على إرجاعها إلى العميل أيضا, لذلك إذا كنت ترغب في إخفاء ذلك يمكنك كتابة CustomAction (http://urlrewriter.net/index.php/support/reference/actions/custom-action) الذي سيحدد نوع من قيمة الدولة في الطلب الخاص بك.

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

كذلك chakrit الجواب يبدو UrlRewriter.NET يخزن URL الأصلي في HttpContext في مفتاح يسمى UrlRewriter.صافي.RawUrl.لذلك يمكنك أن تجرب شيئا مثل:

bool isPageRewritten = 
   !string.IsNullOrEmpty(HttpContext.Current.Items["UrlRewriter.NET.RawUrl"]);

الأكثر وضوحا طريقة هي استخدام الطلب.Url كائن في الصفحة الخاصة بك للحصول على معلومات حول URL سلسلة الاستعلام.على سبيل المثال:

if (Path.GetFileName(Request.Url.FilePath) == "schedule.aspx")
   //Not rewritten
else
   //rewritten

أعتقد أن هذا العمل من HttpContext.الحالي.البنود.

يمكنك حفظ "إعادة التوجيه" في HttpContext.الحالي.العناصر ثم في الصفحات الخاصة بك, يمكنك التحقق من ذلك عن بعض القيمة المضافة.

أعتقد أنك يمكن أن تضيف السنانير urlrewriter.net التي يمكن أن تفعل ذلك شيء الجماعي:

HttpContext.Current.Items["Redirected_From"] = currentUrlHere;

ثم في صفحات الويب الخاصة بك, يمكنك التحقق من ذلك عن طريق:

if (!string.IsNullOrEmpty(HttpContext.Current.Items["Redirected_From"]))
    // the page's been redirected, do something!
else
    // no it's visited normally.

أنا منذ فترة طويلة تركه. ASP.NET التوجيه الإطار .NET framework 3.5 المزود بحزمة الخدمة SP1 هو أفضل من urlrewriter.net المنظمة البحرية الدولية.

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