اذهب إلى المحتوى

السؤال

نشر (معدل)

لدي الشرط اريد استخدمه بشكل مفصل 

مثل لدي ثلاث متغيرات اريدهم العمل علي نفس الصفحة لي هي egypt.php

اريد الروابط الاتية تعمل علي نفس الصفحة 

www.example.com/egypt/cairo/

www.example.com/egypt/cairo/almaadi/

www.example.com/egypt/cairo/almaadi/rent/

RewriteRule ^egyp/(.*)/(.*)/(.*)/$ egypt.php?id=$1&id1=$2&id3=$3

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال

Recommended Posts

  • 1
نشر

حاول استخدام التعديل التالي على ملف .htaccess:

RewriteEngine On
RewriteBase /

RewriteRule ^egypt/([^/]+)/?$ egypt.php?id=$1 [QSA,L]
RewriteRule ^egypt/([^/]+)/([^/]+)/?$ egypt.php?id=$1&id1=$2 [QSA,L]
RewriteRule ^egypt/([^/]+)/([^/]+)/([^/]+)/?$ egypt.php?id=$1&id1=$2&id3=$3 [QSA,L]

وذلك التعديل يتيح لك استخدام الروابط التي تحددها بصورة صحيحة.

الـRewriteRule الأولى تتعامل مع الرابط الأساسي، وتحوّل www.example.com/egypt/cairo/ إلى www.example.com/egypt.php?id=cairo. الـRewriteRule الثانية تتعامل مع رابط يحتوي على متغيرين، وتحوّل www.example.com/egypt/cairo/almaadi/ إلى www.example.com/egypt.php?id=cairo&id1=almaadi.

أما الـRewriteRule الثالثة، فتتعامل مع رابط يحتوي على ثلاثة متغيرات، وتحوّل www.example.com/egypt/cairo/almaadi/rent/ إلى www.example.com/egypt.php?id=cairo&id1=almaadi&id3=rent.

ويرجى التأكد من أنك قمت بتمكين مود Rewrite في خادم الويب الذي تستخدمه وأن ملف .htaccess موجود في المسار الصحيح. كما يجب أن يكون لديك صلاحيات القراءة والكتابة على ملف .htaccess.

  • 0
نشر
بتاريخ الآن قال Mohamed Abdel Moaty:

شكرا لك علي سرعة الاستجابة 

ولكن ليس هناك طريق لستخدام الكل في رابط الواحد بهذا الشكل 

RewriteRule ^egyp/(.*)/(.*)/(.*)/$ egypt.php?id=$1&id1=$2&id3=$3

إذا كنت ترغب في استخدام جميع الثلاثة متغيرات في رابط واحد، فيمكنك تعديل القاعدة لتتناسب مع ذلك. يمكنك استخدام القاعدة التالية:

RewriteEngine On RewriteRule ^egypt/(.*)$ egypt.php?params=$1 [L]

RewriteEngine On
RewriteRule ^egypt/(.*)$ egypt.php?params=$1 [L]

بهذه الطريقة، يمكنك استخدام الروابط التالية على نفس الصفحة egypt.php:

  • www.example.com/egypt/cairo/
  • www.example.com/egypt/cairo/almaadi/
  • www.example.com/egypt/cairo/almaadi/rent/

وسيتم تمرير الجزء الكامل بعد /egypt/ كقيمة واحدة للمتغير params في egypt.php. في داخل egypt.php، يمكنك استخدام دالة مثل explode() لتجزئة القيمة والوصول إلى كل جزء على حدة.

  • 0
نشر
بتاريخ 13 ساعة قال Mohamed Abdel Moaty:

شكرا لك علي سرعة الاستجابة 

ولكن ليس هناك طريق لستخدام الكل في رابط الواحد بهذا الشكل 

RewriteRule ^egyp/(.*)/(.*)/(.*)/$ egypt.php?id=$1&id1=$2&id3=$3

يمكنك استخدام الحل التالي

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^egypt/(.*)$ egypt.php/$1 [L]

في هذا المثال، يتم استخدام الشرط %{REQUEST_FILENAME} !-f لتحويل الروابط التي لا تشير إلى ملفات في الموقع، والشرط %{REQUEST_FILENAME} !-d لتحويل الروابط التي لا تشير إلى مجلدات في الموقع، وذلك لتجنب تحويل الروابط الثابتة في الموقع.

يتم استخدام النمط ^egypt/(.*)$ لتحويل جميع الروابط التي تحتوي على متغيرات إلى صفحة واحدة egypt.php.يتم استخدام خاصية RewriteCond لفحص الشرط %{REQUEST_FILENAME} !-f و%{REQUEST_FILENAME} !-d للتأكد من عدم وجود ملف أو مجلد بالاسم المطلوب في الطلب، وهذا يضمن تحويل الروابط فقط إذا لم يتم العثور على ملف أو مجلد بهذا الاسم في الموقع.

يتم استخدام الشرط [L] في نهاية القاعدة RewriteRule لإيقاف تطبيق أي قواعد أخرى إذا تم تحويل الرابط بنجاح.

يجب أن يتم وضع هذه القاعدة في ملف .htaccess ووضع الملف في المجلد الرئيسي لموقع الويب. يجب التأكد من تفعيل إعادة الكتابة RewriteEngine في ملف htaccess وأن يكون الملف قابل للقراءة والكتابة من قبل المستخدم المسؤول عن الخادم.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...