هل من الممكن استخدام .htaccess لإرسال عناوين URL المكونة من ستة أرقام إلى برنامج نصي مع التعامل مع جميع عناوين URL الأخرى غير الصالحة على أنها 404؟

StackOverflow https://stackoverflow.com/questions/73123

  •  09-06-2019
  •  | 
  •  

سؤال

هل من الممكن استخدام .htaccess لمعالجة جميع عناوين URL المكونة من ستة أرقام عن طريق إرسالها إلى برنامج نصي، مع التعامل مع كل عنوان URL آخر غير صالح كخطأ 404؟

على سبيل المثال:

http://mywebsite.com/132483

سيتم إرسالها إلى:

http://mywebsite.com/scriptname.php?no=132483

لكن

http://mywebsite.com/132483a or
http://mywebsite.com/asdf

سيتم التعامل معه كخطأ 404.

أعمل هذا حاليًا عبر برنامج نصي PHP 404 مخصص ولكنه نوع من الفوضى.يبدو لي أن .htaccess قد يكون حلاً أكثر أناقة، لكنني لم أتمكن من معرفة ما إذا كان ذلك ممكنًا أم لا.

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

المحلول

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^([0-9]{6})$ scriptname.php?no=$1 [L]
</IfModule>

للحفاظ على عنوان URL النظيف

http://mywebsite.com/132483

أثناء تقديم استخدام scriptname.php فقط [L].سيؤدي استخدام [R=301] إلى إعادة توجيهك إلى scriptname.php?no=xxx الخاص بك

قد تجد هذا مفيدا http://www.addedbytes.com/download/mod_rewrite-cheat-sheet-v2/pdf/

نصائح أخرى

في ملف htaccess الخاص بك، قم بوضع ما يلي

RewriteEngine On
RewriteRule ^([0-9]{6})$ /scriptname.php?no=$1 [L]

يقوم السطر الأول بتشغيل محرك mod_rewrite.تضع الأقواس () المحتويات في $1 - ستؤدي () المتتالية إلى ملء $2، $3...وما إلى ذلك وهلم جرا.يقول [0-9]{6} ابحث عن سلسلة مكونة من 6 أحرف بدقة وتحتوي على الأحرف من 0 إلى 9 فقط.

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

أوه، ^ و $ يمثلان بداية ونهاية URI الوارد.

امل ان يساعد!

نعم هذا ممكن مع mod_rewrite.هناك الكثير من البرامج التعليمية الجيدة حول mod_rewrite عبر الإنترنت، ومن المفترض أن يؤدي بحث Google السريع إلى إظهار إجابتك في أي وقت من الأوقات.

ما تريد فعله بشكل أساسي هو التأكد من أن التعبير العادي الذي تستخدمه يبحث فقط عن أرقام وليس أحرف أخرى والتأكد من أن الطول هو 6.ثم ستقوم بإعادة التوجيه إلى scriptname.?no= بالرقم الذي قمت بالتقاطه.

أتمنى أن يساعدك هذا!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top