System

Introduction to Hypertext Access(htaccess)

မဂၤလာပါရွင့္။
Spiceworks Myanmar မွာ Web Designer အျဖစ္ တာဝန္ယူလုပ္ကိုင္ေနတဲ႔ ဆုရည္ထြန္းပါ။
ဒီတစ္ေခါက္ေရြးခ်ယ္ထားတာကေတာ့ Website တစ္ခုမွာ directory ဒါမွမဟုတ္ access နဲ႔ပတ္သက္ၿပီး ထိန္းခ်ဳပ္ဖို႔အတြက္ အသုံးျပဳတဲ့ file တစ္ခုျဖစ္တဲ့ Hypertext Access File(.htaccess file) အေၾကာင္းေလးပါ။ Web development ပိုင္း လုပ္ကိုင္ေနတဲ့လူေတြဆိုရင္ နာမည္ကို ၾကားဖူးၿပီး တစ္ခုခုလုပ္နိုင္တယ္ဆိုတာကို သိၾကပါတယ္။ ဒါေပမယ့္ ဖိုင္အသုံးျပဳနည္းကို အတိအက် မရွင္းျပနိုင္သူေတြရွိေနမွာ ေသခ်ာပါတယ္။
အဲ့ဒီအတြက္ ဒီတစ္ေခါက္မွာေတာ့ အားလုံးအတြက္ အသုံးဝင္မယ္ထင္လို႔ ႐ုံးမွာအသုံးမ်ားတဲ့ Hypertext Access File(.htaccess) နဲ႔ပတ္သက္ၿပီး ဘယ္လိုသတ္မွတ္နိုင္လဲ၊ ဘယ္လိုေရးရမလဲ၊ ဘယ္လို setup လုပ္ရမလဲဆိုတာနဲ႔ ပတ္သက္ၿပီး မိတ္ဆက္ေပးခ်င္ပါတယ္။

.htaccess ဆိုတာ ဘာလဲ။

.htaccess ဆိုတာ “Apache” ကို အသုံးျပဳ၍ web server ၏ လမ္းညႊန္တစ္ခုစီအတြက္ setting မ်ားကို ထိန္းခ်ဳပ္နိုင္သည့္ ဖိုင္တစ္ခု ျဖစ္ပါတယ္။ ပုံမွန္အားျဖင့္ Apache ၏ web server ထိန္းခ်ဳပ္မႈကို “httpd.conf” တြင္ လုပ္ေဆာင္ေသာ္လည္း root လုပ္ပိုင္ခြင့္ရွိေသာ server စီမံခန႔္ခြဲသူတစ္ဦးသာ လုပ္ေဆာင္ဖို႔ အခြင့္အာဏာရွိပါတယ္။
တကယ္လို႔ web server setting မ်ားကို စိတ္ႀကိဳက္ျပင္ဆင္လိုပါက Apache တြင္ .htaccess ဖိုင္ကို သိမ္းဆည္းျခင္းျဖင့္ (သို႔) .htaccess ဖိုင္ကို ဝင္ျပင္ျခင္းျဖင့္ ၎ကို ထိန္းခ်ဳပ္နိုင္ပါတယ္။

server တြင္ .htaccess ဟုေခၚေသာဖိုင္ကို ထည့္သြင္းျခင္းျဖင့္
1. web browser မွ ေတာင္းဆိုမႈကို တုံ႔ျပန္သည့္အေနျဖင့္ web page ကို ျပသရန္၊
2. page တစ္ခုအစား အျခားစာမ်က္ႏွာကို ျပသရန္၊
3. web page ကိုျပသသည့္ အေျခအေနမ်ားကို တင္ျပရန္ ထိန္းခ်ဳပ္နိုင္ပါတယ္။

.htaccess အသုံးျပဳမႈအေျခအေနမ်ား

.htaccess သည္ မည္သည့္ web server သို႔မဟုတ္ website တြင္မဆို အသုံးျပဳနိုင္ေသာ ဖိုင္မဟုတ္ပါ။ .htaccess ဖိုင္ကို အသုံးျပဳရန္ စဥ္းစားေနပါက ေအာက္ပါအေျခအေနမ်ားႏွင့္ ကိုက္ညီေၾကာင္း ေသခ်ာေစရန္ လိုအပ္ပါတယ္။

1. ကိုယ္သုံးတဲ့ web server က “Apache” ကို အသုံးျပဳေနသလား?

Web server တစ္ခုက web server အျဖစ္ လုပ္ေဆာင္နိုင္ရန္ web server software တစ္ခု မရွိမျဖစ္လိုအပ္ပါတယ္။ Apache အျပင္ IIS ကဲ့သို႔ေသာ Microsoft software မ်ားလည္း ရွိပါတယ္။ အကယ္၍ IIS ကဲ့သို႔ေသာ အျခား software ကိုအသုံးျပဳေနပါက server တြင္ .htaccess ဖိုင္ကို တင္ထားျခင္းသည္ အလုပ္မျဖစ္ပါ။
ထို႔ေၾကာင့္ web server ကို Apache အသုံးျပဳထားေၾကာင္း ေသခ်ာဖို႔လိုပါမယ္။

2. .htaccess ကို ထည့္သြင္းဖို႔ permission ဖြင့္ထားသလား?

“Apache” ကို အသုံးျပဳေနလၽွင္ပင္ server setting မ်ားေပၚမူတည္၍ .htaccess မရနိုင္ပါ။ အငွား server မ်ားကဲ့သို႔ေသာ ကုမၸဏီမွ စီမံခန႔္ခြဲျခင္းမျပဳေသာ server မ်ားသည္ ၎တို႔၏ မူရင္း setting မ်ားတြင္ .htaccess ကန႔္သတ္ခ်က္မ်ား ရွိနိုင္ပါသည္။ဒါေၾကာင့္ .htaccess file ကို server မွာ ထည့္သြင္းဖို႔ permission ရွိမရွိကို စစ္ေဆးထားဖို႔လည္း လိုအပ္ပါတယ္။

.htaccess ဖိုင္ကို ဖန္တီးနည္း

.htaccess ဖိုင္တစ္ခုဖန္တီးျခင္းက အလြန္လြယ္ကူပါတယ္။
.htaccess က စာသားဖိုင္ျဖစ္တာေၾကာင့္ Notepad ကဲ့သို႔ေသာ text editor အား ဖြင့္ၿပီး ၎ကို .htaccess ဖိုင္အျဖစ္ ဖိုင္အမည္ “.htaccess” ျဖင့္ သိမ္းဆည္းပါ။

ဒါေပမယ့္ .htaccess ၏ ဖိုင္အမည္တစ္ခုျဖင့္ သိမ္းဆည္းရန္ ႀကိဳးစားပါက “Cannot save with a file name with start with” ကဲ့သို႔ေသာ သတိေပးမက္ေဆ့ခ်္တစ္ခု ေပၚလာၿပီး သိမ္းဆည္းနိုင္မည္မဟုတ္ပါ။
ထိုအေျခအေနတြင္ test.htaccess သို႔မဟုတ္ htaccess.txt ကဲ့သို႔ေသာ .htaccess မွလြဲ၍ အျခားဖိုင္အမည္တစ္ခုျဖင့္ တစ္ႀကိမ္ေရးပါ၊ ၎ကို သိမ္းဆည္းပါ၊ ဖိုင္ကို server သို႔ upload လုပ္ပါ၊ ထို႔ေနာက္ ဖိုင္အမည္ကို “.htaccess” သို႔ ေျပာင္းပါက ျပႆနာမရွိဘဲ အလုပ္လုပ္မွာ ျဖစ္ပါတယ္။

.htaccess ကို အသုံးျပဳနည္း

1. Basic Authentication

ကိုယ့္ရဲ့ Website ကို id/password သိတဲ့သူပဲ access လုပ္ခြင့္ရေအာင္ျပဳလုပ္ခ်င္တဲ့အခါမွာ ေအာက္ပါအတိုင္း “.htaccess” ဖိုင္ ျပဳလုပ္ရမွာ ျဖစ္ပါတယ္။

AuthUserfile /path/.htpasswd
AuthGroupfile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user

အထက္တြင္ေဖာ္ျပထားေသာ “AuthUserFile” တြင္ေဖာ္ျပထားေသာ path ဆိုတာကေတာ့ နမူနာ အေနနဲ႔ထည့္ေပးထားတာျဖစ္ၿပီး “.htpasswd” ထားရွိတဲ့ file path လမ္းေၾကာင္းႏွင့္ အစားထိုးေပးရန္လိုအပ္ပါတယ္။
ထို႔ျပင္ “.htpasswd” ဟုေခၚေသာ ဖိုင္တစ္ခုလည္း လိုအပ္မွာျဖစ္ပါတယ္။ (ဖန္တီးမႈလုပ္ငန္းစဥ္သည္ အထက္ေဖာ္ျပပါ .htaccess ဖိုင္ဖန္တီးမႈလုပ္ငန္းစဥ္ႏွင့္ အတူတူပင္ျဖစ္ပါသည္။)
“.htpasswd” တြင္ ေအာက္ပါအေၾကာင္းအရာမ်ားကို ေရးပါ။

id:password

id ေနရာမွာ မိမိထားခ်င္ေသာ username ထား၍ အသုံးျပဳလို႔ရပင္မယ့္ မိမိထားခ်င္ေသာ password ကိုေတာ့ encode generator အသုံးျပဳၿပီးမွ ထည့္သြင္းအသုံးျပဳရမွာ ျဖစ္ပါတယ္။

2. 301 Redirect

301 Redirect ဆိုတာ အသုံးအမ်ားဆုံး directory လႊဲေျပာင္းေသာ နည္းလမ္းျဖစ္ၿပီး web page အေဟာင္းမွ page အသစ္သို႔ အျမဲတမ္းလႊဲေျပာင္းျခင္းဟု ေခၚၿပီး URL ကို ေျပာင္းလဲျခင္း သို႔မဟုတ္ Domain ကို လႊဲေျပာင္းရာတြင္ အသုံးျပဳပါတယ္။

○ ဥပမာ- 301 ကို http://example.com/old.html စာမ်က္ႏွာမွ http://example.com/new.html သို႔ ျပန္ညႊန္းသည့္အခါ .htaccess ဖိုင္မွာ ေအာက္ပါအတိုင္း ထည့္သြင္းအသုံးျပဳရမွာျဖစ္ပါတယ္။

RewriteEngine on
RewriteRule ^old.html$ http://example.com/new.html [R=301,L]

3. URL Normalization

URL normalization ဆိုတာ တူညီတဲ့ URL အမ်ားႀကီးကို unify ျဖစ္သြားဖို႔အတြက္ ျပဳလုပ္ရာမွာ အသုံးျပဳပါတယ္။

  • http://example.com/
  • http://example.com/index.html
  • http://www.example.com/

○ ဥပမာ: Unification with and without index.html (when unifying without index.html)

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://example.com/$1 [R=301,L]

○ ဥပမာ: Unification with and without www (when unifying without www)

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

စကားမစပ္ အကယ္၍ www ႏွင့္ ေပါင္းစည္းလိုပါက .htaccess ဖိုင္မွာ ေအာက္ပါအတိုင္း ထည့္သြင္းအသုံးျပဳရမွာျဖစ္ပါတယ္။

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

4. Access restrictions from specific IP addresses and domains

သီးျခား IP လိပ္စာမ်ား သို႔မဟုတ္ Domain မ်ားမွ ဝင္ေရာက္ခြင့္ကို ကန႔္သတ္ သို႔မဟုတ္ ျငင္းပယ္လိုသည့္အခါမွာလည္း အသုံးျပဳနိုင္ပါတယ္။
ဆန႔္က်င္ဘက္အေနႏွင့္ သတ္မွတ္ထားေသာ IP လိပ္စာ သို႔မဟုတ္ Domain တစ္ခုမွသာလၽွင္ ဝင္ေရာက္ခြင့္ျပဳရန္လည္း ျဖစ္နိုင္ပါတယ္။

ေအာက္ပါသည္ IP လိပ္စာႏွင့္ Domain ကိုသတ္မွတ္ျခင္း၏ ဥပမာတစ္ခု ျဖစ္ပါတယ္။

  • IP Address:192.168.1.1
  • Domain: example.com

■ If you want to restrict access

order allow,deny
allow from all
deny from example.com
deny from 192.168.1.1

■ If you want to allow access

order deny,allow
deny from all
allow from example.com
allow from 192.168.1.1

ထို႔အျပင္ test-file.html ဟုေခၚေသာ ဖိုင္တစ္ခုတည္းအတြက္ သတ္မွတ္လိုပါက ေအာက္ပါအတိုင္းေရးပါ။

အဆုံးထိ ဖတ္ရႈေပးတဲ့အတြက္ ေက်းဇူးတင္ပါတယ္။
အခုမွစေလ့လာမယ့္ လူေတြအတြက္ တစ္စုံတစ္ခုအက်ိဳးရွိမယ္လို႔ ေမၽွာ္လင့္ပါတယ္။

Hello

Leave a Reply

Your email address will not be published. Required fields are marked *