How to create SEF URLs?
Friday, 28 May 2010 02:03
ကြၽန္ေတာ္တို႔ web site တစ္ခုကို create လုပ္တဲ့ အခါ ကိုယ္ site ကိုလာမယ့္ users ေတြအဆင္ေျပေစဖို႔၊ တနည္း 
အားျဖင့္ user friendly ျဖစ္ဖို႔ ဆိုတာ အေရးၾကီးတဲ့ အခ်က္တစ္ခုပဲ ျဖစ္ပါတယ္။ Web Site မွာ feature ေတြဘယ္
ေလာက္ စုံေအာင္ ရွိေနပါေစ user အေနနဲ႔ အသုံးျပဴရ ခက္ေနမယ္ဆိုရင္ ေအာင္ျမင္သင့္သေလာက္ ေအာင္ျမင္မည္
မဟုတ္ပါ။ user friendly ဆိုတဲ့ အခ်က္ေတြထဲမွာ ကိုယ့္ Web Site မွာရွိ ေနတဲ့ URLs ေတြကို user အလြယ္တကူ မွတ္မိေစဖို႔ရာ အလြန္
အေရးပါလွပါတယ္။ အဲဒီ အတြက္ ခုေနာက္ပိုင္းေတြမွာ SEF URLs (Search Engine Friendly URLs) ေတြျဖစ္ေအာင္ လုပ္လာၾကပါတယ္။
ကြၽန္ေတာ္ ဒီ post မွာ .htaccess + PHP ကိုသုံးျပီး SEF URLs ေတြ အလုပ္လုပ္ပုံကို share မွာျဖစ္ပါတယ္။
Apache's Mod Rewrite
SEF URLs လုပ္ဖို႔ မျဖစ္မေနသိရမွာက Apache's Mod Rewrite ပဲျဖစ္ပါတယ္။ Apache ကို install လုပ္တုန္းက အဲဒီ module ကပါျပီးသား
ျဖစ္ပါတယ္။ ၾကည့္ခ်င္တယ္ဆိုရင္ေတာ့ your apache folder\modules\mod_rewrite.so ဆိုျပီး ရွိပါတယ္။ အေရးၾကီးတာက RewriteRule
ကိုေရးတတ္ဖို႔ပဲ ျဖစ္ပါတယ္။ <?php phpinfo(); ?> ကိုေရးျပီး mod_rewrite ကို enable ျဖစ္မျဖစ္ စစ္ၾကည့္ႏိုင္ပါတယ္။
Simple ဥပမာ ေလးနဲ႔ စရရင္
alice.html နဲ႔ bob.html ႏွစ္ခုကို အရင္ create လုပ္လိုက္ပါ။ very simple html code ေလးေတြမို႔ မေရးေတာ့ဘူးဗ်ာ။
ခုေရးမယ့္ code ၂ ေၾကာင္းကို .htaccess file ထဲမွာ ထည့္ျပီး အေပၚက html ၂ခုနဲ႔ အတူ ကိုယ့္စမ္းမယ့္ project folder ေအာက္ကို
ထည့္လိုက္ပါ။
RewriteEngine on
RewriteRule ^alice.html$ bob.html
ကိုယ္က Browser မွာ alice.html ကို run လိုက္ရင္ bob.html ကို redirect လုပ္သြားမွာ ျဖစ္ပါတယ္။ အလြယ္မွတ္ခ်င္တယ္ ဆိုရင္ေတာ့
RewriteRule ^alice.html(Browser က Current URL ျဖစ္ျပီး) $ bob.html (destination URL လို႔ ဆိုႏိုင္ပါတယ္)
နဲနဲေလးပို ႐ႈပ္တဲ့ ေနာက္ ဥပမာ တစ္ခုကို ၾကည့္ရေအာင္
URL က ဒီလိုမ်ိဳးျဖစ္ေနတာကို http://www.example.com/news.php?news_id=63
ဒီလိုမ်ိဳး http://www.example.com/news/63.html user friendly url ျဖစ္ေအာင္ RewriteRule ကိုေရးၾကည့္ ပါမယ္။
Okay, ရွင္းေအာင္ ၾကည့္မယ္ဆိုရင္ structure ကဒီလိုရွိတယ္ဗ်ာ။
RewriteRule Pattern Substitution [OptionalFlags]
RewriteRule - Command ျဖစ္ပါတယ္။
Pattern - Browser ကေန ျဖစ္လာႏိုင္မယ့္ URL ပုံစံေတြပါ။
Substitution - Pattern ကိုၾကည့္ျပီး redirect လုပ္မွာ ျဖစ္ပါတယ္။ တနည္းအားျဖင့္ေတာ့ destination page ေတြလဲျဖစ္ပါတယ္။
OptionalFlags - F, L, R[=code] ဆိုျပီး flag သုံးခုကို တစ္ခု ( သို႔ ) တစ္ခုထတ္ပိုျပီး ထည့္ႏိုင္ပါတယ္။
F - Forbidden. 403 error ကိုဆိုလိုပါတယ္။
L - သေဘာကေတာ့ ခုေရးထားတဲ့ rule ကို ေအာင္ျမင္သြားရင္ ဒါဟာ ေနာက္ဆုံး rule ပဲဆိုတဲ့ သေဘာပါ။
R[=code] - ဒီေကာင္ကို သုံးမယ္ဆိုရင္ domain name တခုခုထည့္ေပးျပီး HTTP code တခုခုနဲ႔ redirect လုပ္မယ္ ဆိုတဲ့သေဘာပါ။ RewriteEngine on
RewriteRule ^news/([^/\.]+).html/?$ news.php?news_id= [L]
.htaccess ထဲမွာ ဒီ code ကိုေရးျပီး project ရဲ႕ root folder ထဲမွာ အရင္ ထည့္လိုက္ပါ။ ဒီ example မွာ optional ကိုထည့္ မသုံးထားဘူး။
ဒီ rule ကိုၾကည့္မယ္ဆိုရင္
^/news - news နဲ႔ စမယ္လို႕ ေျပာတာ
([0-9]+)\.html - regular expression ျဖစ္တဲ့ ([0-9]+) ဒီဟာေလးက number ေတြထဲက ျဖစ္ခ်င္တာျဖစ္မယ္ ျပီးေတာ့ html နဲ႔ ဆုံးမယ္။
/?$ - regular expression နဲ႔ match ျဖစ္တာေတြကိုပဲ Substitution လုပ္ဖို႔ စဥ္းစားမယ္ ဆိုတဲ့ သေဘာပါ။
news.php?news_id=$1 - ေရွ႕က regular expression ထဲကပါလာတဲ့ variable ကိုအစားထိုးျပီး actual page ကို load လုပ္မွာ
ျဖစ္ပါတယ္။
ကြၽန္ေတာ္သိသေလာက္ share ထားတာပါ။ RewirteRule ကိုခုမွ စမ္းၾကည့္ေနလို႕ မွားေနရင္ comment ေပး ေထာက္ျပေပးေစလိုပါတယ္။
| Next > |
|---|
Login Form
Latest Post
Categories Table View
- Reader's Conner (133)
- PHP (48)
- Joomla CMS (46)
- Codeigniter (18)
- jQuery (12)
- iDhamma (11)
- Mobile Development (10)
- PHP & AJAX (4)
- Apache (3)
- For Mac (3)
- mySQL (2)
- DhammaDroid (1)
Hi Bro Zack,
When i test at localhost, .htaccess is not working. Is it need to change something at apache config. Pls reply me.