سؤال

لقد نشرت سؤال مماثل هنا. وبعد ومع ذلك، كان هذا أكثر عن الحصول على المشورة بشأن ما يجب القيام به. الآن بعد أن أعرف ماذا أفعل، أبحث عن القليل من المساعدة حول كيفية القيام بذلك!

في الأساس لدي موقع ويب ديناميكي 100٪ إلى حد كبير. يتم إنشاء جميع ارتباطات الموقع باستخدام PHP وجميع الصفحات تتكون من PHP ويشمل / رمز. أحاول تحسين كبار المسئولين الاقتصاديين من الموقع من خلال تحسين عناوين URL (كما هو مذكور في السؤال الآخر) وأنا تكافح قليلا.

أنا أستخدم mod_rewrite لإعادة كتابة عناوين URL لطيفة إلى عناوين URL القبيحة على الخادم. إذن ما أحتاج إليه هو الآن تحويل عناوين URL القبيحة (التي يتم إنشاؤها من رمز PHP في الصفحات) إلى عناوين URL أرججة.

فيما يلي عناوين URL أحتاج إلى تحليل (هذه في السؤال الآخر ASWELL):

/index.php?m=ModuleType
/index.php?m=ModuleType&categoryID=id
/index.php?m=ModuleType&categoryID=id&productID=id
/index.php?page=PageType
/index.php?page=PageType&detail=yes

هنا هو ما أريد تحليل عناوين URL أعلاه بما يلي:

/ModuleType
/ModuleType/CategoryName
/ModuleType/CategoryName/ProductName
/PageType
/PageType/Detail

هناك مثال على السؤال الآخر المنشور من قبل غمبو ومع ذلك شعرت أنه كان فوضوي بعض الشيء وغير واضح على ما كان يفعله بالضبط.

هل يمكن لشخص مساعدتي في حل هذه المشكلة؟

شكرا مقدما.

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

المحلول

أعتقد أنني أرى ما أنت بعد ... لقد قمت بإعادة كتابة عنوان URL، ولكن جميع الروابط بين صفحاتك تستخدم بناء جملة URL القديم.

الطريقة الوحيدة التي يمكنني رؤيتها حول هذا هو القيام بشيء من البحث Regex واستبدال الروابط حتى يستخدمون بناء الجملة الجديد. سيكون هذا أكثر تعقيدا بعض الشيء إذا تم إنشاؤه جميع الروابط ديناميكيا، ولكن نأمل أن يكون هناك الكثير مما يجب القيام به.

دون رؤية كيفية إنشاء روابطك في الوقت الحالي، يصعب تحديد كيفية تغيير التعليمات البرمجية. أتصور أنه يعمل مثل هذا على الرغم من:

<?php echo "<a href='/index.php?m=$ModuleType&categoryID=$id'>"; ?>

لذلك كنت تغير هذا إلى:

<?php echo "<a href='$ModuleType/$id'>"; ?>

آسف إذا قمت بإجراء أخطاء في بناء الجملة، بعيدا عن الجزء العلوي من رأسي ...

نصائح أخرى

ما لم أسيء فهم سؤالك، لا تحفي عناوين URL "القبيح"، ويسمى برنامج PHP الخاص بك معهم، لذلك أنت $_GET[] المعلمات الخاصة بك (م، فئة، منتجات) وتجمع بينها لجعل عناوين URL لطيفة، التي لا ينبغي أن تكون صعبة للغاية (فقط من المنطق لمعرفة ما إذا كانت هناك معلمة واحدة موجودة وتسلسل السلاسل).

ستحتاج إلى وحدة تحكم أمامية، والتي سوف ترسل عنوان URL إلى الصفحة الصحيحة.

  1. سيقوم Apache بإعادة كتابة عنوان URL باستخدام القواعد في .htaccess، بحيث يتم إعادة توجيه أي شيء مكتوب إلى index.php؟ q =. على سبيل المثال، الكتابة http://example.com/I/Iher. سيؤدي إلى دعوة إلى index.php؟ q = / I / am / هنا
  2. سيقوم Index.php بتحليل المسار من $ _GET ["Q"] وتقرر ما يجب القيام به. على سبيل المثال، قد تتضمن صفحة، أو انتقل إلى قاعدة البيانات، ابحث عن المسار، واحصل على المحتوى المناسب وطباعته

إذا كنت تريد مثالا باسم .htaccess الذي سيفعل ذلك بالضبط (إعادة التوجيه إلى Inftern.php مع؟ Q = المسار) إلقاء نظرة على كيفية قيام Drupal بذلك:

http://cvs.drupal.org/viewvc.py/drupal/drupal/.htaccess؟revision=1.104.

كما كتب Palantir هذا باستخدام mod_rewrite و .htaccess. للحصول على شروط إعادة الكتابة الصحيحة في .htaccess، قد ترغب في إلقاء نظرة على مولد إعادة كتابة MOD (على سبيل المثال http://www.generateit.net/mod-rewrite/). يجعلها أسهل بكثير.

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