سؤال

أنا أستخدم برنامج نصي PHP يقوم بإنشاء PNGs شفاف للاستخدام كخلفيات CSS من سلسلة استعلام تأخذ قيم RGBA و HSLA. يمكن العثور على البرنامج النصي الأصلي هنا, ، لقد أضفت فقط دعم HSLA.

نظرًا لأن عناوين URL في الخلفية ذات سلاسل استعلام PHP ليست جميلة جدًا ، ولأنها يبدو أنها تكسر اختراق PNG الشفاف ، فقد فكرت في استخدام mod_rewrite للسماح بالبرنامج النصي الذي يسمى. png مع هذا الجملة يسمى:

/assets/colors/h[0-360 value]_s[0-100 value]_l[0-100 value]_a[0-100 value].png

التي سيتم إعادة كتابتها إلى:

/assets/colors.php?h=[0-360 value]&s=[0-100 value]&l=[0-100 value]&a=[0-100 value]

ها هي القضايا التي أواجهها:

  • تمرير متغيرات متعددة مع mod_rewrite
  • باستخدام السطح السفلي كحدد

أعلم أنه يمكن القيام بذلك عن طريق تمرير متغير واحد ثم انفجاره في البرنامج النصي PHP ، ومع ذلك أود أن يتم القيام به بواسطة Apache.

شكرًا مقدمًا ، وإذا أراد أي شخص إصدار HSLA الخاص بي من البرنامج النصي ، فقط اسأل. على أي حال ، أوصيك بالتحقق من ذلك على موقع المؤلف الخاص به.

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

المحلول

سوف Mod_Rewrite يتطابق مع الأشياء في Braces () ، وبعد ذلك يمكنك الرجوع إليها على أنها $ 1 و $ 2 ، وما إلى ذلك بالترتيب الذي تم مطابقته. حتى تتمكن من استخدام هذا لاستخراج متغيرات متعددة عن طريق وضعها داخل الأقواس.

لذلك سيعمل شيء من هذا القبيل من أجلك ،

RewriteRule ^assets/colors/h([0-9]{1,3})_s([0-9]{1,3})_l([0-9]{1,3})_a([0-9]{1,3}).png assets/colors.php?h=$1&s=$2&l=$3&a=$4 

([0-9]{1,3}) سوف يتطابق إما 1 أو 2 أو 3 من الأرقام 0-9 على التوالي. لذا ، "3" ، "10" و "100" ، وما إلى ذلك ، ولكنها ستتطابق أيضًا مع "999" ، لذلك ستحتاج إلى التأكد من أن ملف color.php يتحقق من أن القيم ضمن النطاقات المتوقعة ، إلخ.

نصائح أخرى

جرب هذا:

RewriteEngine on
RewriteRule /assets/colors/h([0-9]+)_s([0-9]+)_l([0-9]+)_a([0-9]+).png /assets/col.php?h=$1&s=$2&l=$3&a=$4 [QSA,L]

اضطررت إلى تغيير اسم البرنامج النصي الخاص بي لجعل هذا العمل. لأن لدي Options MultiViews, ،/الأصول/الألوان/يتم التعامل معها دائمًا بواسطة Colors.php بغض النظر عن تكوين Mod_Rewrite.

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