سؤال

أحاول القيام بما يلي في تطبيق الويب الخاص بي:

<img src="static.example.com/image01.jpg?width=300&height=300" />

هل من الممكن أن يكون خادمي (أستخدم Apache في بيئة استضافة مشتركة) قم بتشغيل برنامج نصي PHP عند الوصول إلى .jpg (أو أي fileType الذي اخترته) بدلاً من مجرد تقديم الملف؟

أعلم أن البرنامج النصي PHP يجب أن يضبط الرؤوس الصحيحة وما إلى ذلك ، أنا فقط أتساءل كيف يمكن تشغيله في المقام الأول.

أعلم أن هذا يمكن القيام به على النحو التالي:

<img src="static.example.com/get_image.php?name=image_01.jpg&width=300&height=300" />

لكن هذا ليس كيف أرغب في الحصول عليها.

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

المحلول

يمكنك استخدام mod_rewrite بشرط أن تكون في دليل فرعي ، أو أن كل ما سيفعله static.example.com الآخر.

أضف شيئًا كهذا إلى .htaccess الخاص بك في هذا الدليل الفرعي.

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{query_string} ^height=([^&]+)&width=([^&]+)
   RewriteRule (.*\.jpg|.*\.png|.*\.gif) controller.php?name=$1&height=%1&width=%2
</IfModule>

تحرير: جرب ما سبق. مثل كل شيء آخر ، لم يخبر ... :)

يصبح ترتيب GET Parameters مهمًا.

test.jpg?height=100&width=120

يجب أن يتحول إلى

controller.php?name=test.jpg&height=100&width=120


هناك نهج آخر هو جعل Apache يخدم .jpg كنصوص PHP لهذا الدليل. فقط انظر إلى httpd.conf أو php.conf وابحث عن .php. ابحث عن هذا التوجيه ، وقم بتكراره ضمن أ <Directory> ل. jpg. لم أجرب هذا بالفعل هذا في دليل واحد ، ولكن في النهاية سيكون أسرع من مسار Mod_Rewrite.

شيء مثل:

<Files *.jpg>
SetOutputFilter PHP
SetInputFilter PHP
</Files>
AddType application/x-httpd-php .jpg
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top