إعادة كتابة وزارة الدفاع / مشكلة عناوين URL النظيفة

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

  •  03-07-2019
  •  | 
  •  

سؤال

لقد كنت أستخدم تثبيت drupal 4.7 لسنوات عديدة، وواجهت مشكلة مؤخرًا.أي أن عناوين URL المُعاد كتابتها تعرض الآن هذه الأحرف:?q= في كل عنوان URL تم إنشاؤه بواسطة drupal كما يلي: http://sitename.com/?q=path/alias ، حيث قبل أن يكون: http://sitename.com/path/alias .

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

<?php   $alias= $_GET['q']; ?>

<a <?php $pos=strpos($alias,"1234"); // node number
if(!$pos == false) {
echo 'style="color:black"'; 
} ?> href="internal/link/alias">Internal Link</a>

أو في الآونة الأخيرة:

<?php $path = isset($_GET['q']) ? $_GET['q'] : '<front>';
$alias = url($path, array('absolute' => TRUE)); ?> 

<a <?php $pos=strpos($alias,"internal/link/alias"); 
if(!$pos == false) {
echo 'style="color:black"';
} ?> href="internal/link/alias">Internal Link</a>

هل يمكن أن تكون هذه هي المشكلة؟إذا كان الأمر كذلك، أي أفكار حول الإصلاحات؟

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

المحلول

لا أعتقد أن مقتطفك هو سبب ذلك.يقرأ فقط من قاعدة البيانات؛ولا يقوم بإجراء تغييرات على عناوين URL.هل لا يزال mod_rewrite ممكنًا؟قد يكون السبب في ذلك هو التغيير الأخير في تكوين الخادم.التحقق من إخراج phpinfo().

بالمناسبة، الخيار $absolute ل url() يكون مرت كوسيطة منفصلة في دروبال 4.7، وليس في $options مجموعة مصفوفة.يجب أن تكون مكالمتك:

url($path, $absolute=TRUE);

نصائح أخرى

أعتقد أن عناوين URL النظيفة الخاصة بك معطلة.عندما لا يكون لديك عناوين URL نظيفة قيد التشغيل، ستبدو جميع عناوين URL الخاصة بك كما هي http://example.com/?q=/foo/bar/baz.تترجم قواعد إعادة الكتابة الطلبات من http://example.com/foo/bar/baz داخل http://example.com/?q=/foo/bar/baz ليتم معالجتها داخليا.

أنت بحاجة إلى العودة والتأكد من أن قواعد إعادة الكتابة الخاصة بك لا تزال تعمل (هل يمكنك حتى الذهاب إلى http://example.com/foo/bar/bazz ?) وأن Drupal به عناوين URL نظيفة قيد التشغيل.

والذهاب إلى المشرف / الإعدادات وتأكد من المسارات النظيفة قيد التشغيل.

حاول القيام بما يلي:

  1. قم بتحميل ملف .htaccess غير المعدل إلى جذر الموقع مرة أخرى

  2. تأكد من توفر mod_rewrite في Apache الخاص بك.إذا كان لديك وصول إلى Shell وكان جهاز Ubuntu/Debian، فما عليك سوى القيام بذلك

    إعادة كتابة a2enmod

  3. تحقق مما إذا كان الخيار ممكّنًا في المشرف/الإعدادات

  4. قم بإنشاء ملف .php بسيط على المجلد الجذر واكتب:

    phpinfo();

ثم فقط معرفة ما إذا كانت الوحدة تعمل.

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