# فرض HTTPS على موقعك
Source: https://docs.webgee.com/ar/security-ssl/force-https





أرسل كل زائر إلى النسخة الآمنة من موقعك، فلا يصل إليه أحد عبر HTTP عادي. ينطبق
على الاستضافة المشتركة والموزِّعة.

## قبل أن تبدأ [#قبل-أن-تبدأ]

تحتاج شهادة SSL عاملة على النطاق أولًا. ففرض HTTPS بدونها يعطي كل زائر تحذيرًا
أمنيًا في المتصفح بدل موقعك. راجع
[تثبيت شهادة SSL مجانية](/ar/security-ssl/free-ssl-certificate).

تأكّد أن الشهادة تعمل بزيارة `https://example.com` مباشرة. فإن حُمّل الموقع دون
تحذير، فتابع.

## أبسط طريقة: مفتاح cPanel [#أبسط-طريقة-مفتاح-cpanel]

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

1. في cPanel، افتح **Domains**.
2. اعثر على نطاقك في القائمة.
3. فعّل **Force HTTPS Redirect**.

<img alt="صفحة Domains وفيها عمود Force HTTPS Redirect ومفتاحه" src="__img0" />

ويسري التغيير فورًا.

ولعدة نطاقات دفعة واحدة، علّمها في العمود الجانبي واستخدم
**Enable Force HTTPS Redirect** فوق الجدول. فلا تحرير ملفات، ولا شيء تتراجع عنه
لاحقًا إن غيّرت مستضيفك.

## مواقع ووردبريس [#مواقع-ووردبريس]

يتولّى مفتاح cPanel إعادة التوجيه، لكن ووردبريس يخزّن عنوانه بنفسه أيضًا، ويجب
أن يتطابق — وإلا ظل ووردبريس يولّد روابط `http://` ويعيد توجيه الزوار ذهابًا
وإيابًا.

1. في ووردبريس، انتقل إلى **Settings ← General**.
2. اضبط كلًا من &#x2A;*WordPress Address (URL)** و&#x2A;*Site Address (URL)** على
   `https://example.com`.
3. اختر **Save Changes**.

وإن كان الموقع يحوي كثيرًا من روابط `http://` المضمَّنة في محتواه، فإن إضافة
[Really Simple SSL](https://wordpress.org/plugins/really-simple-ssl/) تعيد
كتابتها أثناء تقديم الصفحات، فتوفّر عليك تحريرها كلها يدويًا.

## استخدام ‎.htaccess بدلًا من ذلك [#استخدام-htaccess-بدلًا-من-ذلك]

استخدم هذا فقط إن كنت تحتاج سلوكًا شرطيًا لا يعبّر عنه مفتاح cPanel — مثل فرض
HTTPS على مجلد فرعي دون آخر.

أضف هذا في **أعلى** ملف `.htaccess` في جذرك المستنَدي، فوق أي قواعد إعادة كتابة
قائمة:

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

<Callout type="warn">
  يجب أن يكون كل توجيه في سطره الخاص. فقد جمعتها نسخة أقدم من هذه المقالة في
  سطر واحد، وهو ما يرفضه Apache — فإن كنت قد نسخت تلك النسخة وأعاد موقعك خطأ
  500، فهذا هو السبب.
</Callout>

وهنا تفصيلان مهمّان:

* **`R=301` لا `R` وحدها.** فـ `R` المجرّدة تصدر إعادة توجيه مؤقتة، فتظل محركات
  البحث تعامل رابط HTTP بوصفه الأصل ولا يوحّد التغيير ترتيبك أبدًا. أما `301`
  فدائمة.
* **`%{HTTP_HOST}` لا نطاق مكتوب صراحة.** فتظل القاعدة عاملة لكل نطاق ونطاق
  فرعي في الحساب، بما في ذلك بعد تغيير النطاق.

## تأكّد أنه نجح [#تأكّد-أنه-نجح]

```bash
curl -sI http://example.com | head -n 3
```

وتريد `HTTP/1.1 301 Moved Permanently` وترويسة `Location:` تشير إلى عنوان
`https://`. أما `302` فتعني أن إعادة التوجيه مؤقتة — تأكّد أنك استخدمت `R=301`.

## إن ظل المتصفح يعرض «غير آمن» [#إن-ظل-المتصفح-يعرض-غير-آمن]

فإعادة التوجيه تعمل لكن الصفحة تحمّل صورًا أو سكربتات أو أوراق أنماط عبر HTTP.
وذلك محتوى مختلط، وعلاجه منفصل — راجع
[أخطاء المحتوى المختلط](/ar/security-ssl/what-are-mixed-content-errors-and-how-do-i-resolve-them).

## إن حصلت حلقة إعادة توجيه [#إن-حصلت-حلقة-إعادة-توجيه]

فسببها في الغالب دائمًا فرض HTTPS في مكانين معًا — وشائعًا مفتاح cPanel مع
قاعدة `.htaccess` مع إضافة. اختر واحدًا وأزل البقية.

والمواقع خلف Cloudflare تقع في هذا أيضًا حين يكون وضع SSL في Cloudflare
**Flexible**: فتطلب Cloudflare أصلك عبر HTTP، ويعيد خادمك التوجيه إلى HTTPS،
وهكذا دواليك. اضبط وضع SSL في Cloudflare على &#x2A;*Full (strict)**.

## اقرأ أيضًا [#اقرأ-أيضًا]

* [تثبيت شهادة SSL مجانية](/ar/security-ssl/free-ssl-certificate)
* [أخطاء المحتوى المختلط](/ar/security-ssl/what-are-mixed-content-errors-and-how-do-i-resolve-them)
* [تفعيل Cloudflare لموقعك](/ar/domains-dns/how-do-i-enable-cloudflare-for-my-websites)
