عندما فهمت للتو 404. من قبل ، تخيلت ذات مرة أن تكتب كل رمز البرنامج إلى 404
حتى رأيت Server.transfer من ASP ، ظهرت فكرة إنشاء صفحة ثابتة مع 404 صفحة ثابتة في ذهني. .
<!-#تضمين ملف = bin/404_qury->
<٪
حدد Case Bin_Command
علبة بن
server.transfer (bin/web)
حالة التحميل
server.transfer (bin/send-stream)
حالة أخرى
server.transfer (bin/send-404)
نهاية الاختيار
٪>
Hehe ، بعبارة واضحة ، يعتمد على Bin_Command للحكم على ما إذا كان من الممكن أن يحققها. . لا يوجد إعادة كتابة في PHP.
رمز المصدر Bin/404_Query كما يلي:
<٪
urls = mid (request.querystring ، instr (request.querystring ،: 80) +4)
إذا instr (urls ،/)> 0 ثم
bin_command = اليسار (urls ، instr (urls ،/)-1)
getFile = استبدال (urls ، bin_command &/،)
آخر
bin_command = bin
إنهاء إذا
٪>
يتم تنفيذ هذا الرمز بشكل أساسي.
مثل: demo.com/index5.html ، ثم bin_command = bin ، يمكنك معرفة ذلك
demo.com/uploadfiles/123456.gif (يتوافق هذا الملف فعليًا مع الملفات/123456.gif) ، ثم Bin_Command = UploadFiles ، يمكنك أن تعرف أنه يمكنك إعطائها إلى Bin/Send-the-the. يمكنك الرجوع إلى المقالة التي كتبتها مقالًا AP BinaryWrite و ADODB.Stream.
DEMO.com/111/222 ، ثم Bin_Command = 111 ″ ، لا يوجد تعريف في حالة تحديد ، وهو آخر ، وقام بتسليمه إلى bin/send-404 للمعالجة.
وبهذه الطريقة ، فإن جميع الزوار (بما في ذلك: Baidu ، Google) ، هذا الموقع عبارة عن صفحة ثابتة. على حد علمي ، فإن 99.9 ٪ من مضيفي IIS المحليين لا يدعمون ISAPI_Rewrite ، وقد واجهته مرة واحدة لأن الموارد خطيرة للغاية وسيتم إلغاؤها قريبًا.
ما يلي هو ما رأيته على ASP Learning عبر الإنترنت ، متصل بالظهر للرجوع إليه:
اتصل على طريقة server.transfer ، قم بإنهاء تنفيذ الصفحة الأولى على الفور وابدأ في تنفيذ الصفحة الثانية.
إذا بدأت الصفحة الأولى في كتابة مخزن مؤقت للاستجابة ، فسيتم إضافة الصفحة الثانية إلى المخزن المؤقت بدلاً من استبداله.
إذا كان المخزن المؤقت مفتوحًا ، فسيقوم هذه الطريقة بتعديل رأس HTTP ، ما لم يكن هناك محتوى تم إرساله.
عند إرسالها إلى تطبيقات أخرى ، ستتضمن تطبيقات صفحة البدء وكائنات الجلسة معلومات التطبيق.
مثال مثالي
تشرح صفحة المثال التالي كيفية استخدام طريقة server.transfer.
1.
<html>
<body>
<h3> الخطوة 1 -Form صفحة </h3>
<جدول الحدود = 1>
<tr>
<th> post </h>
<td>
<form action = page2.asp method = post>
<نوع الإدخال = اسم النص = الاسم/>
<نوع الإدخال = إرسال قيمة = إرسال/>
</form>
</td>
</tr> <te>
</r>
<th> الحصول على </th>
<td>
<form action = page2.asp method = get>
<نوع الإدخال = اسم النص = الاسم/>
<نوع الإدخال = إرسال قيمة = إرسال/>
</form>
</td>
</table>
</body>
</html>
2. ضع الكود التالي كـ page2.asp (بدون اقتباس):
<٪ language = vbscript ٪>
<html>
<body>
<h3> الخطوة 2 -صفحة transfer </h3>
<٪
حدد Case Ucase
وظيفة ما بعد
server.transfer page3a.asp
حالة الحصول على
server.transfer page3b.asp
حالة أخرى
استجابة. تم استخدام فعل HTTP غير معروف.
نهاية الاختيار
٪>
</body>
</html>
3. ضع الكود التالي كـ Page3a.asp (بدون اقتباس):
<٪ language = vbscript ٪>
<h3> الخطوة 3A -Post Results </h3>
<p> hello <٪ = request.form (name) ٪> </p>
4. ضع الكود التالي كـ Page3b.asp (بدون اقتباس):
<٪ language = vbscript ٪>
<H3> الخطوة 3B -GET REPORTS </h3>
<p> hello <٪ = request.querystring (name) ٪> </p>
ملاحظة: آخر صفحتين غير مكتملات HTML. وذلك لأنه تتم إضافة كلا الصفحتين إلى المخزن المؤقت للصفحة الثانية.
تصفح Page1.asp لاختبار هذا المثيل.