كيف تجلب مورد من خلال نص PHP؟
-
21-09-2019 - |
سؤال
أحاول القيام بما يلي في تطبيق الويب الخاص بي:
<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
لا تنتمي إلى StackOverflow