Utilia

مولّد تحويلات .htaccess

أنشئ تحويلات 301 و302 لملف .htaccess أو لخادم Nginx، وافرض HTTPS وwww، وانقل نطاقًا، واضبط الشرطة المائلة، مع فحص الحلقات والسلاسل.

الخادم
نوع التحويل
العنوان المعتمد
الشرطة المائلة في آخر الرابط
نقل النطاق بأكمله

احتفظ بنسخة احتياطية من إعداداتك الحالية أولًا، واختبر بـ 302 قبل التحويل إلى 301: فالمتصفحات تخزّن التحويلات الدائمة.

الفحوص

كيفية استخدام مولّد تحويلات ‎.htaccess

  1. اختر الخادم: Apache (.htaccess) أو Nginx، ثم نوع التحويل: 301 – دائم أو 302 – مؤقت.
  2. في تحويلات الصفحات، اكتب تحويلًا واحدًا في كل سطر: المسار القديم، ثم مسافة، ثم الرابط الجديد، مثل /old-page.html /new-page/. وتصلح أيضًا علامة الجدولة (tab) أو الفاصلة أو ->، ويمكنك لصق روابط قديمة كاملة أو أسطر Redirect 301 /a /b موجودة لديك.
  3. يمكنك إدخال نطاقك (مثل example.com) لتشير تحويلات الصفحات مباشرةً إلى العنوان النهائي.
  4. في العنوان المعتمد، فعّل فرض HTTPS واختر فرض www أو إزالة www أو ترك www كما هي. وفي الشرطة المائلة في آخر الرابط، اختر إضافتها أو إزالتها.
  5. إذا انتقل الموقع كله، فاملأ نقل النطاق بأكمله بـ النطاق القديم والعنوان الجديد (رابط مطلق)، وأبقِ خيار الإبقاء على المسار مفعّلًا لتصل كل صفحة إلى نظيرتها.
  6. اقرأ الفحوص، ثم انسخ القواعد أو نزّلها. استخدم تحميل مثال لرؤية إعداد كامل.

كيف تعمل القواعد المولّدة؟

في Apache، تكتب الأداة قواعد mod_rewrite تبدأ بسطر RewriteEngine On واحد. وتصبح كل صفحة قاعدة RewriteRule يبدأ نمطها بـ ^/?، فتعمل في ملف .htaccess (حيث تُحذف الشرطة المائلة الأولى) وفي كتلة <VirtualHost> على حد سواء. وتُهرَّب النقاط والأقواس وعلامات الجمع وغيرها من رموز التعابير النمطية في مساراتك، وتصبح المسافة \x20. وفي الرابط الجديد تُهرَّب $ و% لأن Apache يقرؤهما مراجعَ خلفية، ويمنع الخيار NE خادم Apache من ترميز الرابط مرة ثانية.

لا ترى قاعدة RewriteRule سلسلة الاستعلام أبدًا. فإذا احتوى العنوان القديم على سلسلة استعلام، مثل /product.php?id=42، تضيف الأداة سطر RewriteCond %{QUERY_STRING} ^id=42$ والخيار QSD، فتُحذف المعاملات القديمة بدل نسخها إلى الصفحة الجديدة.

تُرتَّب القواعد لتجنب القفزات غير الضرورية: نقل النطاق أولًا، ثم تحويلات الصفحات، ثم الشرطة المائلة، ثم HTTPS وwww. وتعالج قاعدة واحدة HTTPS وwww معًا، فيذهب http://www.example.com إلى https://example.com بتحويل واحد. وحين يكون نطاقك معروفًا، تشير تحويلات الصفحات والشرطة المائلة مباشرةً إلى عنوان HTTPS النهائي.

في Nginx، تصبح قواعد HTTPS وwww ونقل النطاق كتل server مستقلة بـ return 301، وتصبح تحويلات الصفحات أسطر rewrite تلصقها داخل كتلة server الرئيسية. وتُنفَّذ قبل مطابقة location، فتتقدّم أيضًا على قاعدة الشرطة المائلة. وتمنع علامة ? في آخر الوجهة Nginx من إلحاق سلسلة الاستعلام القديمة حين لا ينبغي ذلك.

الفحوص التي تُجرى

  • صفحة تحوّل إلى نفسها، أو صفحتان تحوّل كل منهما إلى الأخرى (حلقة تنتهي برسالة «عدد كبير جدًا من عمليات إعادة التوجيه»).
  • سلاسل مثل A → B → C: وجّه A مباشرةً إلى C، لأن كل قفزة إضافية تبطئ الزوار وتهدر ميزانية الزحف.
  • العنوان القديم نفسه مدرجًا مرتين، وعندها لا تُطبَّق إلا القاعدة الأولى.
  • وجهة ليست رابطًا مطلقًا ولا مسارًا يبدأ بـ /، أو وجهة على نطاقك تستخدم http:// أو صيغة www الخاطئة.
  • إعداد للشرطة المائلة قد يحوّل الوجهة مرة أخرى أو يعيدها إلى مصدرها.

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

هل أستخدم 301 أم 302؟

استخدم 301 حين يكون النقل دائمًا: تنقل محركات البحث إشارات الصفحة القديمة إلى الجديدة وتحدّث فهرسها. واستخدم 302 للتغييرات المؤقتة مثل الصيانة أو حملة قصيرة. تخزّن المتصفحات تحويلات 301، لذا اختبر بـ 302 أولًا.

أين أضع ملف ‎.htaccess؟

في المجلد الجذر للموقع (غالبًا public_html أو www)، بجانب index.php أو index.html. اسم الملف المنزَّل htaccess.txt؛ أعد تسميته إلى .htaccess، أو الصق القواعد في أعلى ملفك الحالي. واحتفظ بنسخة احتياطية من الأصل.

لماذا RewriteRule بدلًا من Redirect 301؟

أسطر Redirect تأتي من mod_alias وتُنفَّذ في مرحلة مختلفة عن RewriteRule. والخلط بينهما في ملف واحد يجعل الترتيب صعب التوقع. أما الاقتصار على mod_rewrite فيُبقي كل القواعد في تسلسل واحد متوقع، ويتيح مطابقة سلاسل الاستعلام.

يظهر موقعي رسالة «عدد كبير جدًا من عمليات إعادة التوجيه» بعد فرض HTTPS، فلماذا؟

خلف موازن أحمال أو CDN أو وكيل ينهي اتصال HTTPS، يرى Apache كل طلب على أنه HTTP عادي، فتكون %{HTTPS} معطّلة دائمًا. في هذه الحالة افحص الترويسة المُمرَّرة بدلًا منها، مثل RewriteCond %{HTTP:X-Forwarded-Proto} !https، أو فعّل التحويل في الـ CDN.

هل تغيّر هذه الأداة شيئًا في خادمي؟

لا. إنها تولّد نصًا في متصفحك فقط. لا يُرسل أي شيء إلى أي مكان، وتبقى أنت المتحكم في مكان تثبيت القواعد وطريقته.