سؤال

لقد قمت بنقل موقع سابق يعتمد على جملة إلى ووردبريس.عملت عملية الاستيراد بشكل جيد ولكن المشكلة هي أن الروابط القديمة لم تعد تعمل.نظرًا لوجود 50 مقالة فقط أو نحو ذلك، أعتقد أنه سيكون من الجيد وضع قاعدة لكل مشاركة (في .htaccess).

حسنًا...ليست الأمور دائمًا كما تريد، لذلك لا تعمل عمليات إعادة التوجيه على الإطلاق :(

تبدو روابط جملة القديمة كما يلي:

http://site.com/index.php?option=com_content&task=view&id=49&Itemid=29
http://site.com/index.php?option=com_content&task=view&id=42&Itemid=29
http://site.com/index.php?option=com_content&task=view&id=68&Itemid=29

وتحتاج إلى ترجمتها إلى:

http://site.com/?p=23
http://site.com/?p=24
http://site.com/?p=25
  • في الأساس لا توجد علاقات بين الروابط القديمة والجديدة، لذلك لا أعتقد أن التعبير العادي سيساعد

  • كلا الموقعين القديم والجديد موجودان في نفس المجال

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

إذن هل أحد منكم واجه نفس المشكلة؟لا أرغب بالضرورة في الحصول على روابط دائمة جيدة، ولكن إذا استطعت، فسيكون ذلك أفضل.المشكلة هي أن لدي العديد من الروابط الخلفية لعناوين url القديمة ولا أريد أن أفقدها.

شكرا جزيلا يا أصدقاء!

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

المحلول

نظرًا لأن تحويل موقعك إلى Wordpress أمر جديد نسبيًا، فهل هناك أي شيء يمنعك من استخدام Joomla! القديم؟المعرف الموجود في جدول قاعدة بيانات WP الخاص بك؟سيسمح لك هذا باستخدام التعبير العادي بسهولة إلى حد ما.

هناك خيار آخر يتمثل في إنشاء برنامج PHP منفصل يتعامل مع Joomla!تقوم عناوين URL بعد ذلك بإعادة التوجيه إلى عناوين Wordpress.لذا، سيكون لديك تعبير عادي في تكوين Apache الخاص بك لاكتشاف عناوين URL الخاصة بـ Index.php?option=com_content&task=view، والعثور على قيمة 'id'، ثم إعادة التوجيه إلى someotherscript.php الذي قد يحتوي على خريطة لمعرفاتك من Joomla!إلى وورد.سيستخدم هذا البرنامج النصي بعد ذلك header('Location:?ص=' .$id) لإعادة التوجيه إلى الصفحة الصحيحة في Wordpress.

نصائح أخرى

شكرا للفكرة!أضع هذا في ملف Index.php (Wordpres الافتراضي):

if(isset($_GET['option'])) {
    if(is_numeric($_GET['id'])){
        header ('HTTP/1.1 301 Moved Permanently');
        header("Location: http://www.site.com/?p={$_GET['id']}");
        die();
    }else {
        die('Hacking attempt');
    }
}

ويعمل مثل...عظيم!:د

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

واجهت مشكلة مشابهة جدًا مع نظام إدارة المحتوى غير المعروف لـ Joomla.إذا كنت تريد القيام بذلك باستخدام .htaccess في Apache، فهناك طريقة، ولكن إذا لم تكن هناك علاقة مطلقة بين عنوان URL القديم وعنوان URL الجديد، فسيتعين عليك كتابة سطرين لكل زوج من عناوين URL.

RewriteEngine On
# now the first Example
RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$
RewriteRule ^index\.php$ /?p=23 [R=301,L]
# Repeat last two lines for all your URLs

لست متأكدًا مما إذا كان لديك بالفعل هذا النوع من عناوين URL الجديدة.شخصيًا، سيكون عنوان URL لـ SEF أفضل، على سبيل المثال: https://example.com/path/to/new/page

إذا كنت تريد القيام بذلك، فيمكنك القيام بذلك، ولكن عليك إضافة ؟في نهاية الوجهة وإلا ستتم إضافة سلسلة الاستعلام القديمة إلى وجهتك الجديدة مثل هذا: https://example.com/path/to/new/page?option=com_content&task=view&id=49&Itemid=29لذلك في هذا المثال قم بذلك على النحو التالي:

RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$
RewriteRule ^index\.php$ /path/to/new/page? [R=301,L]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top