it-swarm.asia

عناوين URL النظيفة للرجل الفقير مقابل Mod_Rewrite

في الشركة التي أعمل فيها ، نستعد لتصميم موقع ويب جديد ، وهناك بعض الخلاف حول كيفية القيام بعناوين URL نظيفة. على مدار العام الماضي ، قمنا بإجراء تحسينات صغيرة على موقعنا الحالي على شبكة الإنترنت تحسباً لإعادة تصميم على نطاق واسع ، والذي تضمن عناوين URL النظيفة من Poor Man ™.

مثال:
http://www.example.com/products/widgets/index.php

http://www.example.com/products/sprockets/index.php

بالنسبة للموقع الجديد ، هناك بعض الكلام حول استخدام mod_rewrite:

  1. يطلب المستخدم http://www.example.com/products/widgets/
  2. يقوم mod_rewrite بإرسالها إلى http://www.example.com/index.php?page=products/widgets
  3. index.php يرسلهم إلى الصفحة الحقيقية http://www.example.com/products/widgets.php

أخفق في معرفة كيف يضيف كل هذا الترامول أي قيمة. يدعي الموظف لصالح mod_rewrite أن عدد أقل من الدلائل يعادل بطريقة أسهل الصيانة.

لا تستخدم أي من صفحاتنا الحالية المتغيرات في سلسلة الاستعلام. كل المحتوى موجود في الملفات الفعلية نفسها. نحن نخطط لوضع بعض المحتوى في قاعدة البيانات ، مثل النشرات الصحفية والمعارض التجارية القادمة التي سنحضرها ، لكن الغالبية العظمى من الصفحات سوف تستخدم فقط [PHP) لتضمين HTML شائع مثل رأس وتذييل الصفحة و التنقل. سأكون بالتأكيد مع استخدام mod_rewrite لمحتوى ديناميكي مثل هذا.

هل هناك فائدة كبيرة أفتقدها أننا يجب أن نستخدم mod_rewrite لكل شيء؟ هل عناوين URL النظيفة الخاصة بـ Poor Man كافية للأجزاء غير التابعة لقاعدة بيانات موقعنا؟

8
Scott

تبدو عملية الخطوة الثالثة التي حددتها أعلاه ضرورية وعديمة الفائدة كما هو مذكور أعلاه. إذا أخذتها index.php في الخطوة 3 إلى الصفحة "الحقيقية" ، فلماذا حتى تهتم mod_rewrite على الإطلاق؟ القيام بذلك سوف ينفي المزايا التي يقدمها mod_rewrite. وهي عنوان URL لمحرك البحث وسهولة صيانة الموقع. إذا توقفت عند الخطوة الثانية ، فستستفيد من mod_rewrite من خلال الاحتفاظ بصفحة واحدة فقط ، ولكن يمكن أن تقدم عددًا غير محدود تقريبًا من الصفحات وأن تكون شفافة للمستخدم ومحركات البحث حيث يرون URL فقط في الخطوة 1.

3
John Conde

إنها أسطورة أن "/ pagename" أو "/ pagename.htm" أفضل لمحركات البحث من "/pagename.php". على الأقل في Google ، لا يوجد بالتأكيد أي أساس لهذا (وأفترض الآخرين أيضًا). وبالمثل ، لا تحتاج "index.php؟ page = pagename" إلى إعادة كتابتها كـ "/ pagename" - يمكن لمحركات البحث فهم عناوين URL هذه دون أي مشاكل ، بل لقد سجلت Google في السجل أنها تفضل عدم إعادة كتابة المستخدمين عليها بلا ضرورة ( http://googlewebmastercentral.blogspot.com/2008/09/dynamic-urls-vs-static-urls.html ). لذلك شريطة ألا تقوم بإنشاء عناوين URL لا نهاية لها مع معلمات URL ، عناوين URL المعاد كتابتها ليست بالضرورة أكثر ملاءمة لمحرك البحث من عناوين URL غير المعاد كتابتها .

ومع ذلك ، قد يفضل المستخدمون عناوين URL لطيفة على عناوين URL القبيحة/المعقدة. إذا كان مصدر قلقك الرئيسي هو وجود عناوين URL لطيفة في نتائج البحث ، فقم بإلقاء نظرة على تنسيق تنسيقات microformat الذي تدعمه Google الآن ( http://googlewebmastercentral.blogspot.com/2010/2009/rich-snippets- testing-tool-Improvement.html ) حيث أن هذه يمكن أن توفر تجربة مستخدم أفضل فيما يتعلق بعناوين URL في نتائج البحث. لن يحل هذا مشكلة المستخدمين الراغبين في الارتباط بعناوين URL لطيفة المظهر ، ولكن بشرط ألا تكون عناوين URL الخاصة بك معقدة إلى ما لا نهاية (والأمثلة ليست كذلك) ، فمن المحتمل ألا تحدث فرقًا ملموسًا إذا قمت بإعادة كتابتها لذلك حالة الاستخدام. إذا لم يكن هناك فرق قابل للقياس ، فمن المحتمل ألا يكون من المنطقي قضاء بعض الوقت في تصميم مثل هذا الإعداد والحفاظ عليه.

4
John Mueller

ما تشير إليه "عناوين URL لـ Poor Man's Clean" هو مجرد عناوين URL نظيفة يتم تنفيذها من خلال نظام الملفات. يمكنك الحصول على أنواع عناوين URL هذه باستخدام mod_rewrite ، تمامًا كما يمكنك الحصول على النوع الثاني من عناوين URL بدون mod_rewrite.

عناوين URL النظيفة هي بالضبط ما يشير إليه الاسم — عناوين URL نظيفة أو تبدو نظيفة. على حد سواء

http://yoursite/foo/bar

و

http://yoursite/foo/bar.php

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

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

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

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

1
Lèse majesté

"عناوين URL النظيفة" غالبًا ما تعني عدم امتداد الملف ؛ يساعد في إخفاء تفاصيل التنفيذ من العارض. ميزة ذلك هي عندما تقرر نقل موقعك من القول ، PHP إلى Ruby على القضبان ، يمكنك القيام بذلك دون تغيير عنوان URL واحد.

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

http://www.example.com/news/2010/10/our-new-url-system/

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

1
Erik

كما قيل ، لا يهم وجود .php أو ?page= حقًا. ما هل المسألة هي إذا كنت تفعل شيئًا مثل هذا:

http://www.example.com/index.php?page=13

0
Hello71

يبدو لي أن كل ما تبذلونه من المحتوى في قاعدة البيانات سيكون أسرع وأسهل في الصيانة ثم الحفر من خلال نظام ملفات كبير في كل مرة تحتاج فيها إلى إجراء تحديثات. كما ذكر John Mueller أعلاه ، لن يُحدث عنوان URL لـ Nice فرقًا كبيرًا في تصنيفاتك ، ومع ذلك ، فأنت تريد التفكير في استخدام Mod_Rewrite للحفاظ على عناوين URL الحالية وقيمتها. IE إذا:

example.com/widgets/index.php به 1000 رابط يشير إليها وتغيير ذلك ليكون example.com/pages/widgets.php تخاطر بفقدان الكثير من هذه القيمة (يمكنك بالطبع إعادة توجيهها ، لكن من الممكن مناقشتها ما إذا كان أم لا سوف تمر بنفس القيمة)

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

0
Joshak