PHP - معالجة الأخطاء المخصصة.تم اختطاف Redirected 404 بواسطة AVG Anti-Virus.كيف تتوقف؟

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

سؤال

لدي موقع ويب يستخدم معالجة الأخطاء 404 المخصصة في PHP/Apache لعرض صفحات محددة.
على سبيل المثال http://metachat.org/recent

لدي شعور بأن هذه طريقة سيئة للقيام بذلك، لكن هذا الرمز ورثته...

على الرغم من أن الصفحة تظهر بشكل صحيح في معظم المتصفحات، إلا أنني أواجه موقفًا حيث يقوم AVG Anti-Virus باختطاف الصفحة وإعادة توجيهها إلى صفحة 404 خارج الموقع.

لقد حاولت فرض رأس (الحالة:200 OK) باستخدام أمر الرأس في PHP، ولكن إذا قمت بعمل تجعيد -I للصفحة، أحصل على ما يلي...

HTTP/1.1 404 Not Found
Date: Fri, 03 Oct 2008 11:43:01 GMT
Server: Apache/2.0.54 (Debian GNU/Linux) DAV/2 SVN/1.1.4 PHP/4.3.10-16 mod_ssl/2
.0.54 OpenSSL/0.9.7e
X-Powered-By: PHP/4.3.10-16
Status: 200 OK
Content-Type: text/html

أعتقد أن السطر الأول هو الخط الذي يعترضه AVG لإعادة التوجيه القسري.بدون إعادة كتابة البرنامج لاستخدام Mod_rewrite (وهو ما لا أفهمه حقًا)، كيف يمكنني (في PHP) إيقاف إرسال السطر "HTTP:/1/1 404 Not Found" في الرؤوس عند عرض هذه الصفحة؟

شكرًا.

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

المحلول

ولا توجد طريقة أخرى غير استخدام URL إعادة كتابة (mod_rewrite و) أو إنشاء صفحات في عداد المفقودين. ما يحدث هو أن يطلب العميل الصفحة التي لا وجود لها. تم تكوين أباتشي للعمل صفحة خاصة على 404 أخطاء، لكنه لا يزال يرسل رمز 404 حالة، ثم AVG يعوض ذلك.

وهكذا، يمكنك أن تفعل شيئا مثل:

RewriteEngine On
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule (.*) index.php?missing_content=$1

وهذا سوف يعيد كتابة كل شيء لا وجود له (وبالتالي سيعطي 404) الى index.php الخاص بك مع مسار URL في المعلمة سلسلة الاستعلام missing_content

نصائح أخرى

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

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

إذا قام شخص ما بتثبيت بعض البرامج التي تعرض شيئًا آخر بدلاً من 404 الخاص بك، فهذه مشكلته الخاصة ولا تحاول محاربتها مما يجعل خدمتك تكمن في المتصفح :)

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

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