Regex للصفحات في سيرش كونسول: فلترة الروابط وأقسام الموقع
26 دقيقة تقريبًا
لحد دلوقتي أغلب شغلنا كان على Queries — كنا بنسأل «الناس بتبحث بإيه؟». لكن Search Console عنده بعد تاني مهم جدًا: Pages. وهنا السؤال بيتغير: بدل «الناس بتبحث بإيه؟» ممكن نسأل «أي جزء من الموقع هو اللي بيظهر فعلًا في جوجل؟» — المقالات، المنتجات، الخدمات، التصنيفات، النسخة العربية أو الإنجليزية، ملفات PDF، صفحات Pagination، URLs فيها Parameters، صفحات سنة معينة.
Search Console يسمح باستخدام Custom (regex) مع كل من Queries وPages، مع إمكانية عرض المطابق أو استبعاده. والمطابقة الافتراضية Partial Match، إلا لو استخدمت ^ أو $ للتحكم في بداية ونهاية النص.
نبدأ من سؤال SEO حقيقي
افترض إن عندك موقع https://example.com/ وسؤالك: المقالات بتحقق أداء إيه مقارنة بباقي الموقع؟ فيه Pattern واضح: كل صفحات المقالات تبدأ بـ https://example.com/blog/. نستخدم ^ اللي عرفناه من Query filtering، لكن على بنية الموقع، واستخدمنا \. علشان النقطة في example.com تكون نقطة فعلية:
^https://example\.com/blog/https://example.com/blog/https://example.com/blog/seo-basics/https://example.com/blog/python-for-seo/https://example.com/product/laptop/https://example.com/services/seo/
دلوقتي تقدر تشوف Clicks وImpressions وCTR وAverage Position الخاصة بقسم المقالات. ليه استخدمنا ^؟ لأن /blog/ لوحدها معناها «أي URL يوجد بداخله /blog/» — لكن ^https://example.com/blog/ معناها «URLs تبدأ تحديدًا بهذا المسار»، وده بيوصف Structure الموقع بشكل أوضح.
افترض مش عايز المقالات الموجودة داخل Blog، عايز صفحة القسم نفسها بس. لو استخدمنا ^ فقط هيظهر برضه /blog/seo/ و/blog/python/. إحنا اتعلمنا الحل: نضيف $:
^https://example\.com/blog/$https://example.com/blog/https://example.com/blog/seo/https://example.com/blog/python/
قسمين مع بعض، واللغات
لو المحتوى المعلوماتي موجود تحت /blog/ و/guides/ وعايز تحلل الاتنين كمجموعة واحدة، نستخدم () و| اللي عرفناهم من أول درس:
^https://example\.com/(blog|guides)/https://example.com/blog/seo/https://example.com/guides/search-console/https://example.com/product/laptop/https://example.com/services/seo/
نفس الفكرة بالظبط لو الموقع عنده نسختين — عربي وإنجليزي: ^https://example.com/ar/ أو ^https://example.com/(ar|en)/ لو عايز الاتنين من بين Subdirectories تانية. لكن مينفعش تقف عند «النسخة العربية بتجيب Impressions أكتر». شوف حجم الصفحات في كل لغة، والدول، وQueries، وCTR، والفترة الزمنية — ممكن النسخة العربية يكون عندها Clicks أعلى، لكن عندها صفحات أكتر بعشر مرات.
نفس التقسيم ينفع لأنواع الصفحات في Ecommerce — /product/ و/category/ و/brand/ — كل واحد Segment لوحده، عشان تسأل: مين اللي بياخد معظم الـNon-brand visibility؟ Product Pages؟ Category Pages؟ Blog؟
ملفات PDF
عايز تعرف هل ملفات PDF بتحصل على ظهور في جوجل؟ إحنا عايزين URL ينتهي بـ .pdf. النقطة لها معنى خاص، فنهربها: \.pdf$ — نقطة فعلية، ثم pdf، ثم نهاية الـURL.
كام URL من التلاتة دول هيتطابق مع \.pdf$؟
\.pdf$https://example.com/files/report.pdfhttps://example.com/catalog/product-guide.pdfhttps://example.com/blog/pdf-guide/
Pagination وParameters
صفحات زي /blog/page/2/ و/blog/page/15/ — الشكل واضح: /page/ زائد رقم. إحنا نعرف الرقم \d+، فنقدر نكتب /page/\d+/. ولو بعض الـURLs عندها Trailing Slash وبعضها لأ، نضيف ? اللي عرفناه: /page/\d+/?$.
/page/\d+/?$https://example.com/blog/page/2/https://example.com/blog/page/15/https://example.com/blog/seo/
مش علشان تقول «عندي 17 صفحة Pagination» — إحنا أصلًا مش بنعمل Crawl. لكن لو ظهرت Pages من النوع ده في Performance data، ممكن تسأل: هل Pagination URLs نفسها بتجيب Impressions؟ هل بتنافس Category أو Article؟
عايز تعرف URLs فيها Query String؟ الشيء المشترك ?، لكن إحنا اتعلمنا إن ? له معنى خاص في Regex، فنهربها: \?.
\?https://example.com/product/iphone/https://example.com/shop/?page=2https://example.com/category/phones/?sort=price
Parameter URLs". Performance Report مش أداة Crawl، وفوق ده جوجل تجمع معظم بيانات الأداء على الـCanonical URL الذي اختارته للصفحة، فـVariations مختلفة لنفس الصفحة قد تُنسب بياناتها إلى الـCanonical بدل ما تظهر لك منفصلة. المعلومة الصحيحة: "فيه 20 URL ظهرت لي ضمن بيانات الأداء المتاحة وطابقت الـPattern"، مش "الموقع كله فيه 20 Parameter URL".سنوات، وIDs رقمية
عندك موقع أخبار أو محتوى قديم، وعايز السنوات الثلاث: /(2024|2025|2026)/. أو 2026 فقط: /2026/. وبعدها تسأل: هل المحتوى القديم من 2024 لسه بياخد Impressions؟
افترض النظام بيولد /product/12345/ و/product/876/ — الشكل /product/ زائد رقم: /product/\d+/. ولو عايزين نهاية الـURL بعد الرقم: /product/\d+/?$.
/product/\d+/?$https://shop.com/product/123/https://shop.com/product/9999/https://shop.com/product/iphone/
\d+ فقط على Pages، ممكن يجيب أي URL فيه رقم — /iphone-17/، /2026/، /product/1234/، /top-10-tools/. مفيد لو هدفك Discovery، لكن لو أنت تحديدًا عايز Product IDs، /product/\d+/ أدق.HTTP مقابل HTTPS، وwww
إحنا اتعلمنا إن ? يعني الجزء السابق اختياري. لو كتبنا ^https?:// الـ ? تطبق على الـs، فيطابق http:// وhttps:// معًا. لكن لو هدفك تحديد صفحات HTTP القديمة فقط، الأفضل تكون واضح: ^http://.
لو عندك https://www.example.com/ وhttps://example.com/، ممكن Pattern يقبل الاثنين: ^https://(www\.)?example\.com/ — الجزء (www\.)? يعني «www. موجود أو مش موجود».
^https://(www\.)?example\.com/https://www.example.com/https://example.com/
حالة الأحرف في URLs
Search Console Regex افتراضيًا غير حساس لحالة الأحرف. يعني مجرد [A-Z] مش كفاية لو عايز تفرق فعليًا بين uppercase وlowercase. هنا نستخدم (?-i) في أول Pattern — معناها: خلي المطابقة من هنا Case-sensitive.
(?-i)^https://example\.com/.*[A-Z]https://example.com/product/iphone/https://example.com/Product/macbook/https://example.com/BLOG/seo/
نفك الـPattern: (?-i) خلّي المطابقة Case-sensitive، ^https://example\.com/ ابدأ بالدومين، .* أي عدد من الـCharacters، [A-Z] وبعدين لازم يوجد حرف Capital واحد على الأقل. لكن متحولش Search Console لـCrawler: لو الـRegex لم يجد Uppercase URLs، أنت فقط عرفت إن مفيش URLs من النوع ده ظهرت لك في Performance data المطابقة للفلتر — مش إن مفيش Uppercase URLs على السيرفر.
دمج Page Regex مع فلاتر أخرى
هنا الموضوع يبدأ يبقى أقوى فعلًا. Search Console يسمح باستخدام أكثر من Dimension للفلترة في نفس الوقت — Pages = Blog Regex، Country = Egypt، Device = Mobile — وساعتها السؤال بقى «أداء مقالات Blog على الموبايل في مصر خلال آخر 3 شهور عامل إيه؟» مش «أداء الموقع عامل إيه؟»
وخد بالك: متبصش فقط على Clicks. Blog عنده Clicks أكتر من Products مش معناه إنه أفضل — يمكن Blog عنده 50,000 URL والمنتجات 500 بس، ويمكن هدف القسمين مختلف تمامًا. Regex يساعدك تعمل Segmentation، لكن المقارنة لازم يكون ليها معنى.
جزء متقدم اختياري: عمق الـURL
افترض عندك /about/ و/blog/ و/blog/seo/ و/blog/seo/technical/، ومهتم تميز الـURLs اللي فيها Segment واحد فقط بعد الدومين. هنا نحتاج Character Class جديد: [^/]. لما ^ تيجي داخل الأقواس المربعة في أولها، معناها هنا «أي Character ما عدا» — فـ [^/] يعني «أي Character ما عدا /»، ومع + يبقى [^/]+ يعني «جزء كامل لا يحتوي Slash».
^https://example\.com/[^/]+/?$https://example.com/about/https://example.com/blog/https://example.com/blog/seo/https://example.com/blog/seo/technical/
ده ممكن يساعد في تحليل URL Depth، لكن متبدأش تستخدمه في كل حاجة — عمق الـURL إشارة، مش حكم على جودة الصفحة لوحده.
عندك: https://example.com/ar/blog/، https://example.com/en/blog/، https://example.com/fr/blog/. عايز العربي والإنجليزي فقط.
https://example.com/ar/blog/https://example.com/en/blog/https://example.com/fr/blog/
عندك: https://example.com/product/123/، https://example.com/product/9999/، https://example.com/product/iphone/، https://example.com/blog/top-10-products/. عايز المنتجات اللي Slug بتاعها ID رقمي.
https://example.com/product/123/https://example.com/product/9999/https://example.com/product/iphone/https://example.com/blog/top-10-products/
الاختبار التطبيقي
عندك موقع Ecommerce بالبيانات دي، وعايز صفحات المنتجات اللي Slug بتاعها رقم فقط:
Product IDs رقمية
اكتب Regex للمنتجات اللي Slug بتاعها ID رقمي فقط، من غير باقي الموقع.
- ·
https://shop.com/product/12345/
- ·
https://shop.com/product/iphone-17/ - ·
https://shop.com/category/phones/ - ·
https://shop.com/blog/page/2/ - ·
https://shop.com/Product/macbook/
قبل تشغيل أي Pattern زي ده، لازم تسأل نفسك: هل الـRegex لم يعرض أي نتيجة معناه الموقع معندوش حاجة من النوع ده؟ الإجابة لا — أنت فقط لم تجد نتائج مطابقة ضمن بيانات الأداء التي يعرضها Search Console.
اختبار الفهم الحقيقي
افترض إنك فتحت Search Console لموقع جديد ولقيت /blog/ و/product/ و/category/ و/services/ و/tag/. متبدأش فورًا تكتب خمس Patterns. الأول اسأل: أنا عايز أعرف إيه؟ لو المشكلة «Traffic الموقع بيجي من المحتوى ولا من الصفحات التجارية؟» يبقى ممكن تحتاج Blog مقابل Products + Categories + Services. لو المشكلة «هل Tags بتظهر في جوجل بشكل غير مقصود؟» ركز على /tag/. حتى في URL Analysis، القاعدة لسه زي ما هي من أول درس: سؤال SEO ← حدد مجموعة الصفحات المطلوبة ← افهم شكل الـURLs ← ابني أبسط Regex ← توقع النتيجة ← راجع Samples ← حلل Metrics ← اتخذ قرار.
قبل الدرس التالي
لحد هنا إحنا بقينا نقدر نستخدم Regex في جانبين كبار جدًا من Search Console: Queries وPages. لكن كل ما الـPatterns تكبر، بيظهر خطر جديد — أنت ممكن تكتب Regex شغال، وSearch Console قبله، ورجع نتائج، ومع ذلك يكون الـRegex نفسه غلط بالنسبة للسؤال اللي أنت بتحاول تجاوبه. في الدرس التالي هنركز على الجزء ده: إزاي تختبر وتصلح Regex بدل ما تثق فيه لمجرد إنه اشتغل — False Positives وFalse Negatives، وحدود RE2، وLookahead وLookbehind، وإمتى تستخدم أكثر من Filter بدل Regex معقد.
أحسنت، وصلت إلى نهاية الدرس.