سؤال

لقد لاحظت أنه في بعض الأحيان (خاصةً عندما يكون Mod_Rewrite غير متوفر) يتم استخدام مخطط المسار هذا:

http://host/path/index.php/clean_url_here
--------------------------^

هذه يبدو للعمل ، على الأقل في أباتشي ، حيث index.php يسمى ، ويمكن للمرء الاستعلام /clean_url_here جزء عبر $_SERVER['PATH_INFO']. PHP حتى نوع من الإعلانات هذه الميزة. أيضا ، على سبيل المثال ، Codeigniter يستخدم Framework هذه التقنية كإعداد افتراضي لعناوين URL الخاصة بهم.

السؤال: ما مدى موثوقية التقنية؟ هل هناك حالات ، حيث لا يتصل أباتشي index.php لكن يحاول حل المسار؟ ماذا عن Lighttpd و Nginx و IIS و Aolserver؟

سؤال ServerFault؟ أعتقد أن الأمر يتعلق أكثر باستخدام هذه الميزة داخل رمز PHP. لذلك أسأل هنا.

إضافة: كما اقترح فولكيك ، امتداد معقول لهذا السؤال هو: كيف يمكن للمبرمج أن يؤثر على وجود $_SERVER['PATH_INFO'] على أنواع الخوادم المختلفة؟

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

المحلول

أعتقد أن هذا سؤال مناسب بنفس القدر لـ StackOverflow و ServerFault. على سبيل المثال ، لم يكن بإمكانك أن أخبرك إلا أن Pathinfo جدير بالثقة مثل أي مدخلات مستخدم (مما يعني أنه يمكن أن يحتوي على أي شيء تقريبًا) وقد يتلقى البرنامج النصي أو لا يتلقىه اعتمادًا على إصدار خادم الويب والتكوين:

أباتشي: قبول pathinfo
IIS: على سبيل المثال lempathinforscriptMappings و اخرين
وهلم جرا، وعلى...

لكن من المحتمل أن يخبرك مدراء الخادم بالإعدادات التي يمكنك توقعها "في العالم الحقيقي" ولماذا يفضل هذه الإعدادات.
لذلك يصبح السؤال: ما مقدار التأثير الذي لديك (أو قاعدة المستخدم المتوقعة) على تكوين الخادم.

نصائح أخرى

قبول pathinfo يحتاج إلى تمكين من أجل الحصول على هذا العمل.

من تجربتي أقول PATH_INFO هو عادةً ما يكون متاحًا في بيئات استضافة الويب العادية وإعدادات الخادم - حتى في IIS - ولكن في حالات نادرة ، ليس كذلك. عند إنشاء تطبيق من المفترض أن يكون قابلاً للنشر على أكبر عدد ممكن من المنصات ، لن أثق في Path_info على مستوى مشفر.

كلما استطعت ، أحاول بناء وظيفة غلاف build_url() هذا ، اعتمادًا على إعداد التكوين ، يستخدم أيضًا

  • عنوان URL الخام www.example.com/index.php?clean_url=clean_url_here
  • آلية path_info www.example.com/index.php/clean_url
  • mod_rewrite www.example.com/clean_url

واستخدام ذلك في جميع عناوين URL ينبعث التطبيق.

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

من الناحية الفنية ، هذه عناوين URL جيدة. SEO-wise ، فهي "أقل مثالية".

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