আপনি যদি কেবল তার জন্য রুট পরিবর্তন করতে চান picture.php
তবে পুনরায় লেখার নিয়মটি যুক্ত করা .htaccess
আপনার প্রয়োজনীয়তা পরিবেশন করবে তবে আপনি যদি ওয়ার্ডপ্রেসের মতো ইউআরএল পুনর্লিখন চান তবে পিএইচপি হ'ল উপায়। এখানে দিয়ে শুরু করার সহজ উদাহরণ।
ফোল্ডার কাঠামো
মূল ফোল্ডারে দুটি ফাইলের প্রয়োজন রয়েছে .htaccess
এবং index.php
, এবং বাকী .php
ফাইলগুলি আলাদা ফোল্ডারে যেমন রাখার মত ভাল হয় inc/
।
root/
inc/
.htaccess
index.php
.htaccess
RewriteEngine On
RewriteRule ^inc/.*$ index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
এই ফাইলটির চারটি নির্দেশ রয়েছে:
RewriteEngine
- পুনর্লিখন ইঞ্জিন সক্ষম করুন
RewriteRule
- inc/
ফোল্ডারে সমস্ত ফাইলে অ্যাক্সেস অস্বীকার করুন , সেই ফোল্ডারে কোনও কল পুনর্নির্দেশ করুনindex.php
RewriteCond
- অন্যান্য সমস্ত ফাইলে (চিত্র, সিএসএস বা স্ক্রিপ্টগুলির মতো) সরাসরি অ্যাক্সেসের অনুমতি দিন
RewriteRule
- অন্য কিছুতে পুনর্নির্দেশ index.php
index.php
যেহেতু এখন সমস্ত কিছুই সূচি.এফপি তে পুনঃনির্দেশিত হয়েছে, ইউআরএল সঠিক কিনা, সমস্ত পরামিতি উপস্থিত রয়েছে এবং পরামিতিগুলির ধরণটি সঠিক কিনা তা নির্ধারিত হবে।
ইউআরএল পরীক্ষা করতে আমাদের নিয়মের একটি সেট থাকা দরকার এবং এটির জন্য সেরা সরঞ্জামটি একটি নিয়মিত প্রকাশ expression নিয়মিত এক্সপ্রেশন ব্যবহার করে আমরা একটি ঘা দিয়ে দুটি উড়ে মারা যাব। ইউআরএল, এই পরীক্ষাটি পাস করার জন্য অনুমোদিত অক্ষরগুলির উপর পরীক্ষিত সমস্ত প্রয়োজনীয় পরামিতি থাকতে হবে। এখানে নিয়মের কয়েকটি উদাহরণ দেওয়া হল।
$rules = array(
'picture' => "/picture/(?'text'[^/]+)/(?'id'\d+)", // '/picture/some-text/51'
'album' => "/album/(?'album'[\w\-]+)", // '/album/album-slug'
'category' => "/category/(?'category'[\w\-]+)", // '/category/category-slug'
'page' => "/page/(?'page'about|contact)", // '/page/about', '/page/contact'
'post' => "/(?'post'[\w\-]+)", // '/post-slug'
'home' => "/" // '/'
);
এরপরে অনুরোধটি ইউরি প্রস্তুত করতে হবে।
$uri = rtrim( dirname($_SERVER["SCRIPT_NAME"]), '/' );
$uri = '/' . trim( str_replace( $uri, '', $_SERVER['REQUEST_URI'] ), '/' );
$uri = urldecode( $uri );
এখন আমাদের ইউরি অনুরোধটি রয়েছে, চূড়ান্ত পদক্ষেপটি হ'ল নিয়মিত প্রকাশের বিধিগুলিতে ইউরি পরীক্ষা করা।
foreach ( $rules as $action => $rule ) {
if ( preg_match( '~^'.$rule.'$~i', $uri, $params ) ) {
/* now you know the action and parameters so you can
* include appropriate template file ( or proceed in some other way )
*/
}
}
সফল ম্যাচটি হবে, যেহেতু আমরা রেজিজেমে নামযুক্ত সাব-প্যাটার্নগুলি ব্যবহার করি, $params
পিএইচপি যেমন অ্যারে পূরণ করে তেমন $_GET
অ্যারে পূরণ করে । তবে, ডায়নামিক ইউআরএল ব্যবহার করার সময় $_GET
অ্যারে পরামিতিগুলির কোনও চেক ছাড়াই পপুলেট হয়।
/ ছবি / কিছু + + টেক্সট / 51
বিন্যাস
(
[0] => / ছবি / কিছু পাঠ্য / 51
[পাঠ্য] => কিছু পাঠ্য
[1] => কিছু পাঠ্য
[আইডি] => ৫১
[2] => 51
)
picture.php? টেক্সট কিছু + + পাঠ্য & id = = 51
বিন্যাস
(
[পাঠ্য] => কিছু পাঠ্য
[আইডি] => ৫১
)
এই কয়েকটি লাইন কোড এবং নিয়মিত অভিব্যক্তিগুলির প্রাথমিক জ্ঞান একটি শক্ত রাউটিং সিস্টেম তৈরি শুরু করার জন্য যথেষ্ট।
সম্পূর্ণ উত্স
define( 'INCLUDE_DIR', dirname( __FILE__ ) . '/inc/' );
$rules = array(
'picture' => "/picture/(?'text'[^/]+)/(?'id'\d+)", // '/picture/some-text/51'
'album' => "/album/(?'album'[\w\-]+)", // '/album/album-slug'
'category' => "/category/(?'category'[\w\-]+)", // '/category/category-slug'
'page' => "/page/(?'page'about|contact)", // '/page/about', '/page/contact'
'post' => "/(?'post'[\w\-]+)", // '/post-slug'
'home' => "/" // '/'
);
$uri = rtrim( dirname($_SERVER["SCRIPT_NAME"]), '/' );
$uri = '/' . trim( str_replace( $uri, '', $_SERVER['REQUEST_URI'] ), '/' );
$uri = urldecode( $uri );
foreach ( $rules as $action => $rule ) {
if ( preg_match( '~^'.$rule.'$~i', $uri, $params ) ) {
/* now you know the action and parameters so you can
* include appropriate template file ( or proceed in some other way )
*/
include( INCLUDE_DIR . $action . '.php' );
// exit to avoid the 404 message
exit();
}
}
// nothing is found so handle the 404 error
include( INCLUDE_DIR . '404.php' );