ওয়ার্ডপ্রেস কীভাবে ইউআরএল তৈরি করে যা অ্যাপাচি জানে?


17

আপনি যখন ওয়ার্ডপ্রেসে কোনও পৃষ্ঠা তৈরি করেন, এটি ডাটাবেস সারণিতে কেবল একটি প্রবেশিকা; সেই জায়গায় কোনও আসল ফাইল নেই। তবে আমি নিজেই সেই স্থানে একটি ফাইল তৈরি করতে পারি এবং এটি ওয়ার্ডপ্রেস থেকে দূরে পৃষ্ঠাটি চুরি করবে। আমি ফাইলটি মুছুন এবং এটি নির্বিঘ্নে ওয়ার্ডপ্রেস পৃষ্ঠায় ফিরে যায়।

এটি কীভাবে অর্জন করা যায় তা সম্পর্কে আমি কেবল কৌতূহলী। সম্ভবত ওয়ার্ডপ্রেস এবং অ্যাপাচি (?) এর মধ্যে কিছু যোগাযোগ হচ্ছে।

উত্তর:


27

আসলে অ্যাপাচি এবং ওয়ার্ডপ্রেসের মধ্যে কোনও যোগাযোগ হচ্ছে না। "ম্যাজিক" ঘটছে অ্যাপাচি mod_rewriteনিয়মে।

একটি স্ট্যান্ডার্ড ওয়ার্ডপ্রেস ইনস্টলেশন জন্য, আপনার নিম্নলিখিত নিয়ম আছে .htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

এই লাইনটি লক্ষ্য করুন: RewriteRule . /index.php [L] এখানে, আমরা অ্যাপাচিকে অভ্যন্তরীণভাবে কোনও ইউআরএল অনুরোধে পুনর্নির্দেশ করতে বলছি /index.php

যদি না: এই লাইনটিRewriteCond %{REQUEST_FILENAME} !-fমিথ্যা হয়ে যায়। তার মানে, উপরোক্তটিরRewriteCondসাথে এটিযুক্ত করেRewriteRuleআমরা আপাচে সমস্ত অনুরোধ প্রেরণ করার জন্য বলছি/index.php, তবে এটি কোনও বিদ্যমান ফাইল নয়

এছাড়াও, যখন এই লাইন:RewriteCond %{REQUEST_FILENAME} !-dমিথ্যা হয়ে যায়। তার মানে, উপরোক্তটিরRewriteCondসাথে এটিযুক্ত করেRewriteRuleআমরা আপাচিকে সমস্ত অনুরোধ প্রেরণ করতে বলছি/index.php, তবে এটি যদি কোনও বিদ্যমান ডিরেক্টরি না থাকে তবে

সুতরাং শেষ পর্যন্ত, এটি কোনও বিদ্যমান ফাইল বা বিদ্যমান ডিরেক্টরি না থাকলে আপাচি অভ্যন্তরীণভাবে সমস্ত অন্যান্য অনুরোধ প্রেরণ করছে /index.php

সুতরাং আপনি যেমন দেখেন, অ্যাপাচি এবং ওয়ার্ডপ্রেসের মধ্যে কোনও যোগাযোগ হচ্ছে না। অ্যাপাচি সব কিছু নিজেই স্থির করে নিচ্ছে এবং আমরা এটি ব্যবহার RewriteRuleএবং RewriteCondনির্দেশনা ব্যবহার করার জন্য বলছি ।

mod_rewriteএখানে আরও পড়ুন ।


3
এটা অসাধারণ. আমি পুরোপুরি বুঝতে পারি। আমি ডিফল্ট .htaccess ফাইলটি অনেকবার দেখেছি এবং কখনও এটি বিশ্লেষণ করতে বিরক্ত করি না। ধন্যবাদ!
ম্যাট

এটি ফ্রন্ট কন্ট্রোলার নামে পরিচিত একটি ডিজাইনের প্যাটার্ন। নোট করুন যে এটি সমস্ত অ-বিদ্যমান ইউআরএলগুলি সূচক.এফপি-তে পুনঃনির্দেশ করে, এর অর্থ এই যে আপনি যদি আপনার ফাংশন.ফপি ফাইলের পুরো পথটি টাইপ করেন তবে ফ্রন্টকন্ট্রোলার কাজ করবে না এবং ওয়েবসাইট ফাংশন.এফপি পরিবেশন করবে। এ কারণেই আপনি প্রায়শই ওয়ার্ডপ্রেস প্লাগইন এবং থিম ফাইলগুলি দিয়ে শুরু দেখতে পাবেনif ( !defined(‘ABSPATH’)) exit;
Sjors Ottjes

হ্যাঁ আমি এটি প্লাগিনগুলিতে দেখেছি কিন্তু এর উদ্দেশ্য বুঝতে পারি নি। সুতরাং, যদি !defined(‘ABSPATH’)সত্য হিসাবে মূল্যায়ন করা হয়, এর অর্থ ওয়ার্ডপ্রেস ব্যতীত অন্য কিছু স্ক্রিপ্টটি অ্যাক্সেস করার চেষ্টা করছে (কারণ ABSPATH wp-config.php এ সংজ্ঞায়িত করা হয়েছে), এবং সুতরাং এটি অনুরোধটিকে উপেক্ষা করা উচিত। এটা কি ঠিক?
ম্যাট

@ ম্যাট এটি সঠিক। যদিও আমি এটি "ওয়ার্ডপ্রেস ব্যতীত অন্য কিছু" বলব না। কারণ আপনি ABSPATHঅন্য কোনও পিএইচপি স্ক্রিপ্টেও সংজ্ঞা দিতে পারেন , সুতরাং এটি আপনার নিজের সার্ভারে অন্যান্য স্ক্রিপ্টগুলিকে মঞ্জুরি দেবে। এটি যা অনুমতি দেবে না তা হ'ল আপনার সার্ভারের বাইরে থেকে এই ফাইলটির সরাসরি অ্যাক্সেস (ব্রাউজার থেকে বলুন)। কারণ সেই ফাইলটি সরাসরি অ্যাক্সেস করে ব্যবহারকারীরা কোনওভাবেই সংজ্ঞা দিতে সক্ষম হয় না ABSPATH
ফায়াজ

এটি জানতে পেরে সত্যিই দুর্দান্ত। আমি ক্রমাগত সুরক্ষার জন্য উদ্বিগ্ন এবং আমি এখনই এর সুবিধা নিতে সক্ষম হব। ধন্যবাদ!
ম্যাট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.