وقتی یک آدرس را در نوار آدرس مرور گر خود تایپ می کنید، مرورگر شما فایلی های که دریافت می کند را نمایش می دهد، وب سرور ها تعیین می کنند که چه فایلی و چگونه باید نمایش داده شود. پر کاربردترین وب سرورها آپاچی و ماکروسافت IIS می باشند. مانند هر نرم افزاری، وب سرورها نیز دارای تنظیمات خاص هستند، به هر حال شما شاید به عنوان یک کاربر آپاچی مجوز تغییر تنظیمات آپاچی را نداشته باشید. ( چون در هاست های اشتراکی تغییر در تنظیمات آپاچی موجب تغییر برای همه کاربران خواهد شد، لذا معمولا مدیران سرور مجوز دسترسی و تغیر فایل پیکربندی آپاچی را به کاربران نمی دهند) اما می توانید یک فایل تنظیمات را تغییر دهید که فقط در وبسایت شما تاثیر داشته باشد، این فایل به htaccess. معروف است.
این فایل یکی از ویژگی های انعطاف پذیر در آپاچی می باشد، از آن جهت می گوییم انعطاف پذیر به این دلیل که شما می توانید این فایل را در اسرع وقت تغیر دهید و بلافاصله نتایج آن را بر روی سایت خود مشاهده کنید.
دسترسی به این فایل از طریق مرورگر امکان پذیر نمی باشد، اگر فایل .htaccess در فهرست ریشه از سرور قرار گیرد یا همان public_html ، به صورت کل به جز تنظیمات شامل همه زیر شاخه ها یا subfolder های موجود در ریشه یا public_html خواهد شد و این روند ادامه دارد تا به فایل .htaccess دیگری برسد، یعنی اگر در یکی از زیر فولدر فایل قرار دهیم آپاچی تنظیمات فایل .htaccess موجود در آن فولدر را اجرا خواهد کرد.
برای مثال:
فلدرهای Subfolder01 و Subfolder02 زیر مجموعه فولدر یا شاخه data هستند، اگر ما فایل .htaccess را در فلدر data قرار دهیم ، تغییرات به صورت اتوماتیک شامل پوشه های Subfolder01 و Subfolder02 نیز خواهد شد
حال اگر ما در زیر شاخه subfolder02 یک فایل .htaccess قرار دهیم، تنظیمات موجود در آن برای subfolder2 از سوی آپاچی اجرا خواهد شد.
از آنجایی که آپاچی همواره به دنبال فایل .htaccess در شاخه ها و زیر شاخه ها می گردد، امکان پیکربندی سریع آپاچی بدون تاخیر و یا متوقف کردن آن را فراهم می کند.
order allow,deny
deny from all
order allow,deny
deny from all
برای مثال کاربران امکان دسترسی به فایلهای با پسوند روبرو ندارند: .inc
order allow,deny
deny from all
AuthName "Users zone"
AuthType Basic
AuthUserFile /pub/home/your_login/.htpasswd
AuthName "Users zone"
AuthType Basic
AuthUserFile /pub/home/your_login/.htpasswd
AddDefaultCharset UTF-8
منبع: بست هاست
این فایل یکی از ویژگی های انعطاف پذیر در آپاچی می باشد، از آن جهت می گوییم انعطاف پذیر به این دلیل که شما می توانید این فایل را در اسرع وقت تغیر دهید و بلافاصله نتایج آن را بر روی سایت خود مشاهده کنید.
دسترسی به این فایل از طریق مرورگر امکان پذیر نمی باشد، اگر فایل .htaccess در فهرست ریشه از سرور قرار گیرد یا همان public_html ، به صورت کل به جز تنظیمات شامل همه زیر شاخه ها یا subfolder های موجود در ریشه یا public_html خواهد شد و این روند ادامه دارد تا به فایل .htaccess دیگری برسد، یعنی اگر در یکی از زیر فولدر فایل قرار دهیم آپاچی تنظیمات فایل .htaccess موجود در آن فولدر را اجرا خواهد کرد.
برای مثال:
فلدرهای Subfolder01 و Subfolder02 زیر مجموعه فولدر یا شاخه data هستند، اگر ما فایل .htaccess را در فلدر data قرار دهیم ، تغییرات به صورت اتوماتیک شامل پوشه های Subfolder01 و Subfolder02 نیز خواهد شد
حال اگر ما در زیر شاخه subfolder02 یک فایل .htaccess قرار دهیم، تنظیمات موجود در آن برای subfolder2 از سوی آپاچی اجرا خواهد شد.
از آنجایی که آپاچی همواره به دنبال فایل .htaccess در شاخه ها و زیر شاخه ها می گردد، امکان پیکربندی سریع آپاچی بدون تاخیر و یا متوقف کردن آن را فراهم می کند.
فایل htaccess
در ویرایش به این نکات توجه کنید، در صورتی عدم رعایت آنها امکان دارد با اشکال جدی مواجه شوید
* آدرس فایل ها باید، کامل باشد و از زیر شاخه اصلی سرور شروع شود به عنوان مثال به این نمونه توجه کنید:در ویرایش به این نکات توجه کنید، در صورتی عدم رعایت آنها امکان دارد با اشکال جدی مواجه شوید
/opt/home/www.site.com/htdocs/config/.htpasswd
* نام دامنه باید کامل و شامل پروتکل استفاده شده در آن باشد، به نمونه زیر توجه کنید (پروتکل مورد استفاده http می باشد)
Redirect / http://www.site.com
در خود فایل htaccess باید به این نکته نیز توجه کنید اولا فایل فاقد هر گونه پسوند است همچنین قبل از نام htaccess یک . (نقطه یا دات) قرار دارد که می شود .htacess و اینکدینگ ذخیره فایب هم باید ASCII mode باشد، بهترین ویرایش گر برای ویرایش این فایل همان نوت پد خودمان است.
اکنون به سراغ بررسی بعضی از کدهای پرکاربرد این فایل برویم:
# چگونه مانع خواندن فایلها توسط کاربران و بازدیدکنندگان شویم؟
محدودیت دیدن برای همه فایل ها:
deny from all
اجازه دسترسی از آی پی خاص:
order allow deny
deny from all
allow from
در قسمت نام آی پی خود یا مورد نظر را قرار دهیدد، به مثال زیر توجه کنید
deny from all
allow from
در قسمت نام آی پی خود یا مورد نظر را قرار دهیدد، به مثال زیر توجه کنید
order allow deny
deny from all
allow from 192.168.111.111
deny from all
allow from 192.168.111.111
محدودیت دسترسی برای یک آی پی خاص:
order allow deny
deny from all
deny from
deny from all
deny from
محدودیت گروهی فایل ها توسط ماسک
order allow,deny
deny from all
محدود کردن کاربران برای دسترسی به یک پسوند خاص:
order allow,deny
deny from all
برای مثال کاربران امکان دسترسی به فایلهای با پسوند روبرو ندارند: .inc
محدود کردن دسترسی کاربران به یک فایل به همراه پسوندش:
order allow,deny
deny from all
# قرار دادن رمز عبور
قرار دادن رمز برای یک شاخه (فولدر یا دایرکتوری):
AuthName "Private zone"
AuthType Basic
AuthUserFile /pub/home/your_login/.htpasswd
require valid-user
AuthType Basic
AuthUserFile /pub/home/your_login/.htpasswd
require valid-user
راهنمایی: AuthName متنی است که به کاربر نشان داده می شود و می توان از آن برای شرح درخواست استفاده کرد. AuthUserFile تعیین مکانی که فایل رمز عبور برای این فولدر یا شاخه در آن قرار دارد. این فایل توسط یک ابزار ویژه به نام htpasswd.exe تولید می شود.
برای مثال شما اگر قصد دارید برای یک دایرکتوری توسط .htaccess رمز ایجاد کنید می توانید، فایل .htaccess شامل کد زیر می باشد، زمانی که کاربر درخواست دیدن صفحه محافظت شده را توسط مرورگر ارسال می کند پیغام For Registred Users Only نمایش داده می شود، رمز ورود به شاخه محافظت شده در فایل .htpasswd موجود در /pub/site.com قرار گرفته است (آدرس محل فایل نیز باید کامل باشد)، اگر آدرس فایل .htpasswd اشتباه بنویسی، آپاچی این فایل و رمز حاوی آن را پیدا نخواهد کرد و شاخه محافظت شده برای هیچ کس قابل دیدن نخواهد بود:
برای مثال شما اگر قصد دارید برای یک دایرکتوری توسط .htaccess رمز ایجاد کنید می توانید، فایل .htaccess شامل کد زیر می باشد، زمانی که کاربر درخواست دیدن صفحه محافظت شده را توسط مرورگر ارسال می کند پیغام For Registred Users Only نمایش داده می شود، رمز ورود به شاخه محافظت شده در فایل .htpasswd موجود در /pub/site.com قرار گرفته است (آدرس محل فایل نیز باید کامل باشد)، اگر آدرس فایل .htpasswd اشتباه بنویسی، آپاچی این فایل و رمز حاوی آن را پیدا نخواهد کرد و شاخه محافظت شده برای هیچ کس قابل دیدن نخواهد بود:
AuthName "For Registered Users Only"
AuthType Basic
AuthUserFile /pub/site.com/.htpasswd
require valid-user
AuthType Basic
AuthUserFile /pub/site.com/.htpasswd
require valid-user
قرار دادن رمز تنها برای یک فایل :
AuthName "Users zone"
AuthType Basic
AuthUserFile /pub/home/your_login/.htpasswd
قرار دادن رمز برای گروهی از فایل ها:
شما می توانید از این فرمت برای محدود کردن چندین گروه از فایل ها استقاده کنید ، برای مثال ما فایل با پسوند sql را انتخاب کرده ایم.
شما می توانید از این فرمت برای محدود کردن چندین گروه از فایل ها استقاده کنید ، برای مثال ما فایل با پسوند sql را انتخاب کرده ایم.
AuthName "Users zone"
AuthType Basic
AuthUserFile /pub/home/your_login/.htpasswd
# چک کردن حق دسترسی ها
شرح وظیفه: مثلا ما یک شاخه با نام a1 و دو زیر شاخه با نام های a2 و a3 و همچنین دو سطح دسترسی نیز داریم. گروه نخست فقط به a2 و a3 دسترسی دارد و گروه دوم به هر سه شاخه دسترسی دارد. این شرایط باید به صورت اتوماتیک ایجاد شود که فقط یک بار اجازه نامه برای a1 بررسی شود و حقوق دسترسی به a2 و a3 نیز
اگر برای ورد به a1 یک بار رمز و نام کاربری را کاربر وارد کرد، اگر کاربر به a2 دسترسی داشته باشد رمز عبور دوباره سوال نشود و اگر به a3 دسترسی نداشته باشد پیام رمز را وارد کنید نمایش داده شود.
اگر برای ورد به a1 یک بار رمز و نام کاربری را کاربر وارد کرد، اگر کاربر به a2 دسترسی داشته باشد رمز عبور دوباره سوال نشود و اگر به a3 دسترسی نداشته باشد پیام رمز را وارد کنید نمایش داده شود.
a1 محافظت شده در همان زمان و a2 و a3 محافظت شده تنها برای اعضای خاص
.htaceess For a1:
AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/your_login/htdocs/closearea/.htpasswd"
require valid-user
AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/your_login/htdocs/closearea/.htpasswd"
require valid-user
.htaceess For a2:
AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/your_login/htdocs/closearea/.htpasswd"
require user user1 user2 user3
AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/your_login/htdocs/closearea/.htpasswd"
require user user1 user2 user3
.htaccess For a3:
AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/your_login/htdocs/closearea/.htpasswd"
require user user1 user4 user5
AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/your_login/htdocs/closearea/.htpasswd"
require user user1 user4 user5
# چگونه تغییر مسیر (ری دایرکت) ایجاد کنیم
برای اینکه بازدیدکنندگان را مثلا به آدرس http://test.com منتقل کنیم می توان از کد زیر در htaccess استفاده کرد:
برای اینکه بازدیدکنندگان را مثلا به آدرس http://test.com منتقل کنیم می توان از کد زیر در htaccess استفاده کرد:
Redirect / http://www.test.com
#نمایش صفحه تعیین شده بر اساس آی پی کاربر
SetEnvIf REMOTE_ADDR REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /another_page.html
RewriteCond %{REDIR} redir
RewriteRule ^/$ /another_page.html
برای مثال اگر بازدیدکننده ای با آی پی ۱۹۲٫۱۲۷٫۱۲۷٫۱۲۷ از سایت بازدید کرد ، صفحه this_is_ip.html نمایش داده شود:
SetEnvIf REMOTE_ADDR 192.127.127.127 REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /this_is_ip.html
RewriteCond %{REDIR} redir
RewriteRule ^/$ /this_is_ip.html
تغییر مسیر (ری دایرکت) زمانی که کاربر درخواست صفحه خاصی کرده است
redirect /_vti_bin http://www.microsoft.com
redirect /scripts http://www.microsoft.com
redirect /MSADC http://www.microsoft.com
redirect /c http://www.microsoft.com
redirect /d http://www.microsoft.com
redirect /_mem_bin http://www.microsoft.com
redirect /msadc http://www.microsoft.com
RedirectMatch (.*)\cmd.exe$ http://www.microsoft.com$1
redirect /scripts http://www.microsoft.com
redirect /MSADC http://www.microsoft.com
redirect /c http://www.microsoft.com
redirect /d http://www.microsoft.com
redirect /_mem_bin http://www.microsoft.com
redirect /msadc http://www.microsoft.com
RedirectMatch (.*)\cmd.exe$ http://www.microsoft.com$1
# چگونه صفحات خطای آپاچی دلخواه خود را داشته باشیم؟
خطای ۴۰۴ – هنگامی که کاربر مجوز دسترسی به صفحه یا دایرکتوری درخواستی را ندارد.
خطای ۴۰۳ - صفحه پیدا نشد، زمانی نمایش داه می شود که محتوا و فایل مورد درخواست پیدا نشود
خطای ۵۰۰- خطای داخلی سرور (مثلا هنگامی که فایل .htaccess دارای خطا می باشد)
خطای ۴۰۳ - صفحه پیدا نشد، زمانی نمایش داه می شود که محتوا و فایل مورد درخواست پیدا نشود
خطای ۵۰۰- خطای داخلی سرور (مثلا هنگامی که فایل .htaccess دارای خطا می باشد)
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
# چگونه مانع نمایش محتوای شاخه ای که فاقد صفحه index هست شویم؟
Options -Indexes
# آیا می شود رمز گذاری (اینکدینگ) همه مرورگرها را به صورت پیش فرض خود در آورد؟
گاهی اوقات بعضی مرورگرها زبان های غیر انگلیسی را به اشتباه کدینگ می کنند، مثلا برای زبان فارسی می توان با قرار دادن این کد در فایل .htaccess رمزگذاری پیش فرض را utf-8 قرار داد.
گاهی اوقات بعضی مرورگرها زبان های غیر انگلیسی را به اشتباه کدینگ می کنند، مثلا برای زبان فارسی می توان با قرار دادن این کد در فایل .htaccess رمزگذاری پیش فرض را utf-8 قرار داد.
AddDefaultCharset UTF-8
منبع: بست هاست