مولد إعادة توجيه Htaccess

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

كيفية إنشاء قواعد إعادة التوجيه

  1. 1

    اختر نوع إعادة التوجيه

    الرقم 301 دائم ويُستخدم للنقل الآمن من ناحية محركات البحث، بينما الرقم 302 مؤقت ويُستخدم في اختبارات A/B وإعادة التوجيهات الموسمية.

  2. 2

    أدخل المصدر والوجهة

    مسارات دقيقة أو أنماط regex: يصبح المسار القديم نمط RewriteRule ويصبح عنوان URL الجديد وجهة إعادة التوجيه.

  3. 3

    تحقق من العلامات

    تحصل كل قاعدة على العلامة الصحيحة `[R=301,L]` أو `[R=302,L]`، ليعمل الكود المولَّد مباشرة مع mod_rewrite دون أي تعديل.

  4. 4

    قم بنسخ التعليمات

    يُدرج الكتلة المولدة داخل قسم `<IfModule mod_rewrite.c>` من ملف .htaccess.

التوجيهات `mod_rewrite` مقابل `mod_alias`

يوفر Apache وحدتين لإعادة التوجيه؛ اختر بينهما وفقًا لتعقيد القاعدة.

دليل اتخاذ القرار

المتطلب الاستخدام المثال
الرابط الأصلي الدقيق → الرابط الجديد الدقيق Redirect Redirect 301 /old /new
بادئة بحرف بدل (wildcard) RedirectMatch RedirectMatch 301 ^/blog/(.*)$ /articles/$1
مطابقة سلسلة الاستعلام RewriteRule انظر أدناه
فرض بروتوكول HTTPS RewriteRule RewriteCond %{HTTPS} off + قاعدة
شرطي (متصفح، ملفات كوكي) RewriteRule مع RewriteCond

مثال: فرض HTTPS مع www

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

مثال: نقل /blog/post-123 إلى /articles/post-123

RewriteEngine On
RewriteRule ^blog/(.*)$ /articles/$1 [L,R=301]

الأعلام التي سترَاها

  • L، آخر قاعدة؛ لا تواصل معالجة القواعد الأخرى.
  • R=301 أو R=302، إعادة التوجيه برمز الحالة هذا.
  • NC، غير متمايز بين الحروف الكبيرة والصغيرة.
  • QSA، أضف سلسلة الاستعلام الأصلية إلى عنوان URL الجديد.
  • NE، لا تُعِد ترميز الأحرف الخاصة في الهدف.

الأخطاء الشائعة

  • نسيان توجيه RewriteEngine On؛ فبدونه لا يكون لأي قاعدة إعادة كتابة أي تأثير.
  • استخدام 302 بشكل افتراضي؛ حيث يعتبره جوجل مؤقتًا، وبالتالي يظل الرابط القديم محتفظًا بترتيبه.
  • التوجيهات المتسلسلة (قديم → وسيط → نهائي): اسعَ دائمًا لقفزة واحدة فقط؛ فكل قفزة إضافية تُفقد قيمة الربط وتزيد زمن التأخير.

الأسئلة الشائعة

استخدم الانتقال من نوع 301 للتحولات الدائمة، مثل نقل الموقع، أو تغيير اسم الرابط (URL slug)، أو الترقية إلى بروتوكول HTTPS. أما الانتقال من نوع 302 فيُستخدم فقط في الحالات المؤقتة، مثل توجيه المستخدمين إلى صفحة صيانة أو تنفيذ تجارب تقسيمية من نوع A/B. كما أن محركات البحث تنقل إشارات الترتيب عبر الانتقال من نوع 301 بشكل موثوق، بينما لا يحدث ذلك بشكل موثوق عبر الانتقال من نوع 302.

السبب الأكثر شيوعًا هو نسيان الشرطة المائلة الأولى في النمط. في RewriteRule، يتطابق النمط مع المسار دون الشرطة المائلة الأولى (مثل ^blog/)، بينما في Redirect (mod_alias) يبدأ النمط بالشرطة المائلة (مثل /blog). لا تخلط بين الاصطلاحين.

نعم، استخدم RewriteCond %{QUERY_STRING} ^id=123$ قبل RewriteRule. لا يقرأ توجيه Redirect العادي سلسلة الاستعلام؛ فقط RewriteRule يمكنه مطابقتها.

نعم، عند الطلب التالي، يقوم Apache بإعادة قراءة ملف .htaccess في كل مرة؛ ولا يلزم إعادة تشغيل الخادم. إذا لم يحدث أي شيء، تأكد من أن قيمة AllowOverride All محددة في ملف vhost الخاص بالمجلد.

أدوات ذات صلة

الأداة متاحة بلغات أخرى