إعادة توجيه روابط الموقع من http:// إلى https://

كيف تقوم بفرض HTTPS باستخدام ملف .htaccess على روابط الموقع في وحة التحكم cPanel؟

بعد تركيب شهادة تأمين SSL أو بروتوكول طبقة المنافذ الآمنة على الدومين الخاص بك، فأنت بحاجة لإخبار الخادم بأن يقوم بتقديم الروابط من خلال هذا البروتوكول. وذلك من خلال ملف .htaccess والموجود في المجلد الأساسي بالاستضافة، والذي يتعامل معه خادم Apache
ولتحقيق ذلك، يجب إضافة مجموعة خاصة من التوجيهات تسمى قواعد إعادة الكتابة (Rewrite Rules) إلى ملف .htaccess في الاستضافة، والذي يمكن العثور عليه في المجلد الأساسي (Root Directory) لموقع معين في لوحة التحكم (cPanel) (على سبيل المثال "public_html"). أيضا، يمكن إنشاء هذا الملف إذا لم يكون موجودا.

ملحوظة: قد يكون هذا الملف موجود لكن غير ظاهر، خاصة في شكل لوحة التحكم الجديد (paper_latern)، ولإظهاره يجب أن تقوم بالدخول على إدارة الملفات (File Manager)، ومن ثم تقوم بالنقر على زر إعدادات (Settings) وإختيار "إظهار الملفات المخفية" (Show Hidden Files)، وحفظ الإعدادات لكي تتمكن من رؤية الملفات والمجلدات المخفية والتي تبدأ بنقطة (dotfiles).


إظهار الملفات المخفية (dotfiles) داخل حساب cPanel

* حالات التوجيه للروابط:

- تمكين إعادة التوجيه لجميع المواقع في حساب لوحة التحكم (cPanel).
لكي تتمكن من تحويل أو إعادة توجية كافة الروابط في هذا الدومين، يمكن استخدام الصيغة التالية داخل ملف .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

هذه السطور ستقوم باخبار الخادم بإعادة توجيه الروابط المتعلقة بالدومين إلى بروتوكول طبقة المنافذ الآمنة SSL التي تُطلب من خلال HTTPS:// إذا لم تكن مطلوبة بالفعل، وذلك باستبدال http:// مع https://، على سبيل المثال: (https://domain.com/subfolder/index.php سيتم تحويله إلى http://domain.com/subfolder/index.php).

وبنفس الطريقة تعمل السطور التالية، لكن لضمان إعادة توجيه جميع حالات الروابط المختلفة بالموقع:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

- تمكين وفرض HTTPS على موقع محدد دون غيره من المواقع المستضافة في نفس حساب لوحة التحكم (cPanel).
لكي تتمكن من تحويل أو إعادة توجية موقع واحد محدد، يمكنك استخدام واحد من مجموعة السطور التالية:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^sitename\.net$ [OR]
RewriteCond %{HTTP_HOST} ^www\.sitename\.net$
RewriteRule ^(.*)$ https://www.sitename.net/$1 [R,L]

 

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^sitename\.net$|^www\.sitename\.net$
RewriteRule ^(.*)$ https://www.sitename.net/$1 [R,L]

 

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?sitename\.net
RewriteRule ^(.*)$ https://www.sitename.net/$1 [R,L]

كل واحدة من مجموعة الصيغ السابقة تقوم بفحص إذا ما كان الطلب لهذا الدومين (sitename.net) بالتحديد عن طريق منفذ (Port) 80، تقوم بتحويل الرابط إلى استخدام منفذ (Port) 443، والذي يستخدم بروتوكول https://، ايً ما كان الطلب باستخدام أو بدون استخدام "www."، وتجعل الرابط لهذا الدومين يُكتب بـ https://، فيمكنك استخدام أي واحدة من مجموعة الصيغ هذه حسب وضع أو بنية الموقع.


- تمكين وفرض HTTPS على مجلد بعينة على الدومين
في بعض الحالات قد تحتاج إلى إعادة توجيه مجلد معين موجود في الدومين إلى البروتوكول https://، بينما تريد باقي الموقع كما هو دون تحويل.
لتقوم بذلك يمكنك استخدام السطور التالية في ملف .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?subfolder/(.*) https://%www.sitename.net/subfolder/$1 [R,L]

هذه الصيغ ستقوم بتحويل وإعادة توجية الطلب على المجلد "subfolder" إلى بروتوكول https، بناءً على الطلب.


- تمكين وفرض HTTPS على ملف بعينة على الدومين
كما في المثال السابق على إعادة توجيه مجلد، سيقوم الصيغ التالية بإعادة توجيه، وتحويل الطلب على ملف محدد على الدومين:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^example_file\.html$ https://www.sitename.net/example_file.html [R,L]

* كيف تقوم بتحديد نوع إعادة التوجيه عند استخدام ملف .htaccess؟


كل سطر إعادة توجية يحتوي على ما يمكن أن يسمى "مؤشر إعادة كتابة" أو (Rewrite Flag)، والموجود في الصيغة بين قوسين معقوفين ([R,L])، هذا المؤشر أو العلم يتحكم في عملية إعادة التوجيه لتتم بشكل صحيح، لكي تقوم بإعادة التوجيه لرابط مع علامة التوجيه 301 "أي إعادة التوجيه الدائم" (Redirect permanent)، فأنت تحتاج لوضع مؤشر أو علم في نهاية سطر التوجية ما بين القوسين المعقوفين ([R=301,L]).
RewriteRule ^(.*)$ https://www.sitename.net/$1 [R=301,L]

ملحوظة: مع عدم وضع علم لإعادة التوجيه (R-flag) سيقوم الخادم بتحويل الرابط مع الحالة 302 افتراضياً.

يمكنك استخدام هذه الأداة (http://www.redirect-checker.org/) لتساعدك في كشف الأخطاء في إعادة التوجيه.

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