Apache
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 ေပး ေထာက္ျပေပးေစလိုပါတယ္။
Default php File in Apache
Sunday, 25 October 2009 11:19
ဒါကေတာ့ ကၽြန္ေတာ့္ Site ကို ဖတ္တဲ့ မသိေသးတဲ့ ေဘာ္ေဘာ္ေတြ အတြက္ပါ။ သိၿပီးသားသူမ်ားအေနနဲ ့ကေတာ့
အလြန္ကို လြယ္ၿပီး ရယ္စရာေကာင္းေသာ Post ေလးတစ္ခု ျဖစ္ခ်င္ျဖစ္ေနပါလိမ့္မယ္။ ဒါေပမယ့္ မသိေသးတဲ့
သူတစ္ေယာက္အတြက္ ရည္ရြယ္ၿပီး ေရးလိုက္ရပါတယ္။ ဒီလိုပါ တစ္ေန ့ကၽြန္ေတာ္ သူငယ္ခ်င္းတစ္ေယာက္က
သူ ့Localhost မွာ RUN လိုက္ရင္ index.php File က default အျဖစ္တက္မလာဘူးလို ့ေျပာတယ္။
http://localhost/ myproject/ ဆိုၿပီး Browser မွာ RUN လုိက္ရင္ myproject ထဲမွာ ရွိတဲ့ index.php ကို
စၿပီး RUN ခ်င္တာ ျဖစ္ပါတယ္။ အခုဟာက index.php ကို မ RUN ပဲ ရွိသမွ် directory, file ေတြကို ျပေနတာပဲ
ျဖစ္ပါတယ္။ ဒီေတာ့ ဒီ issue ကို ဘယ္လိုျပင္ရမလဲ ဆိုၿပီး ကၽြန္ေတာ့္ကို ေမးပါတယ္။ ဒါကေတာ့ Apache Setting
မွာ ျပင္ရမွာ ျဖစ္ပါတယ္။ Apache ထဲက conf ဆိုတဲ့ Folder ထဲကို သြားလိုက္ပါ။ ၿပီးရင္ httpd.conf ဆိုတဲ့ File ကို
Notepad, Notepad++, textpad စတဲ့ဟာ တစ္ခုခုနဲ ့ဖြင့္လိုက္ပါ။ ၿပီးရင္ေတာ့ Line 211 ကို သြားလိုက္ပါ။
ဒီ code ကို ေတြ ့ပါလိမ့္မယ္။
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
အဲ့ဒီမွာ ဒီလိုေလး ျပင္ေပးလိုက္ပါ။
<IfModule dir_module>
DirectoryIndex index.php
</IfModule>
ၿပီးရင္ေတာ့ Apache Service ကို restart ခ်ဖို ့မေမ့ပါနဲ ့။ ႏို ့မို ့ဆိုရင္ ျပင္ထားတာ
effect မျဖစ္ဘဲ ေနပါလိမ့္မယ္။ တစ္ခုေျပာခ်င္တာက ကၽြန္ေတာ့္ သူငယ္ခ်င္း Install လုပ္ထားတာကေတာ့ xampp,
wamp တို ့မဟုတ္ပါဘူး။ ဒါမ်ိဳး ေတြမွာေတာ့ ဒီလို case မ်ိဳးကို ေတြ ့ရခဲလွပါတယ္။ အထက္မွာ ေျပာခဲ့တဲ့အတိုင္း
ျပင္လိုက္ရင္ေတာ့ ဒီ issue ေလးက OK သြားပါၿပီ။
Apache Instllation
Tuesday, 16 September 2008 15:24
Apache Web Server ကုိစျပီး Install လုပ္ပါ။
Apache Install လုပ္တာက မခက္ဘူးဗ် ဘာလို ့လဲဆိုေတာ့ Installation Wizard ကို သံုးျပီး Next ကုိ Click
ျပီးလုပ္ရင္ရတယ္
Apache Installation ကို ပုံနဲတကြ ဖတ္ႏိုင္ပါတယ္
Apache Download
Latest Post
Login Form
Categories Table View
- Reader's Conner (103)
- PHP (45)
- Joomla CMS (36)
- Codeigniter (10)
- jQuery (6)
- PHP & AJAX (4)
- Apache (3)
- For Mac (3)
- mySQL (2)
