سؤال

وهذه هي مشكلة غريبة جدا، وأتمنى أن أستطيع شرح ذلك بوضوح.

والأساس، ونحن جعل عملية تحديث رئيسية في موقع العميل اليوم، وتحتاج إلى تحديث بعض قواعد إعادة الكتابة في هتكس لاستيعاب الهيكل الجديد، الخ ...

وهكذا، حيث كان لدينا أصلا أشياء مثل:

RewriteRule ^/resources/?$  index.php?id=resources
RewriteRule ^/media/?$      media.php

وغيرنا إلى:

RewriteRule ^/resources/?$  index.php?id=resources
RewriteRule ^/media/?$      index.php?id=media

ولكن عندما قمنا بزيارة http://www.example.com/media - انها عرض صفحة سائل الإعلام القديمة. ثم، عندما أزلنا media.php القديم من جذوره وثيقة، وصلنا 404s. شيء ما لا يزال رسم الخرائط / وسائل الإعلام إلى media.php - ويتجاهلون حكم كتابة

والشيء الغريب هو - تعمل كل قواعد كتابة أخرى في ملف غرامة - وهناك حوالي 20 أو نحو ذلك في وجود

لقد تتبع صعودا ونزولا على عشقتك وملفات التكوين الأخرى، ولكن لا يمكن العثور على أي إشارة إلى وسائل الإعلام أو غيرها من الموجهات كسر (ثلاثة في المجموع) - لذلك نحن الحيرة

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

المحلول 2

وتعطيل الخيار MultiViews في الموقع هتكس إصلاح المشكلة - يبدو أن هذا كان تتيح التفاوض المحتوى الذي يتم معالجتها قبل قواعد إعادة الكتابة

نصائح أخرى

وأظن بقوة هذا من شأنه أن يكون راجعا إلى AcceptPathInfo، والتي من وجهة نظري هو أباتشي سوء الميزة. افتراضيا أعتقد أن تشغيله حيث PHP غير معالج.

وحاول إضافة إلى هتكس الخاص بك، أو يفضل httpd.conf الخاص (وإعادة):

AcceptPathInfo Off

وانظر: http://httpd.apache.org/docs /2.2/mod/core.html#acceptpathinfo

-

وهناك بعض النقاط الجانب:

ويجب عليك التأكد من أن RewriteRules بك تنتهي دائما مع [L] عندما كنت قد وجدت مباراة - وسوف يساعد في تصحيح الأخطاء. منها مثلا:

RewriteRule ^/media/?$      index.php?id=media [L]

وأيضا، يمكن أن تقلل من عدد من القواعد من خلال الجمع بين مماثلة. منها مثلا:

RewriteRule ^/(media|resources)/?$  index.php?id=$1 [L]

وأنا شخصيا أعتقد أن استخدام /؟ في نهاية النصف الأول الخاص بك ليست جيدة، لأنه يعني أن كلا من عناوين العمل، دون توجيه، وهذا يعني أنك لم يكن لديك واحدة النهائي الذي هو "صحيح". أنا شخصيا سوف تستخدم:

RewriteRule ^/(media|resources)/$  index.php?id=$1 [L]
RewriteRule ^/(media|resources)$ /$1/ [L,R]

وبعبارة أخرى، يجب أن يكون موردا فريدا لذلك، الكنسي URL واحد (النهائي).

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