.Htaccess چیست؟

نویسنده :
تاریخ:سه شنبه 6 آبان 1393-01:18 ب.ظ

  1. .Htaccess چیست؟
  2. کاربردها
  3. نکته ها و مسائل امنیتی

.Htaccess یک فایل پیکر بندی برای وب سایت هایی است که از سرور آپاچی استفاده می کنند. وقتی این فایل در یکی از پوشه های وب سایت قرار می گیرد، وب سرور آپاچی بررسی می کند که چه دستوراتی در این فایل وجود دارد و بعد طبق این دستورات، آن قسمت از سایت که htaccess در آن قرار دارد را پیکر بندی می کند. این فایل می تواند برای فعال و یا غیر فعال کردن یک سری از توابع و ویژگی های وب سرور آپاچی مورد استفاده قرار بگیرد که می تواند ریدایرکت کردن یک صفحه یا نمایش پیغام های خطای رایج مانند: ارور 404 را شامل شود.
استفاده از این فایل در همه موارد پیشنهاد نمیشود زیرا امنیت وب سرور را تحت شعاع قرار می دهد. اما در مواقعی که سرور به صورت اشتراکی و اصطلاحا share شده خدمت رسانی می کند و تعداد زیادی سایت برروی آن قرار دارد پیشنهاد آن است که از فایل htaccess استفاده شود. زیرا هر سایت باید توانایی پیکر بندی قسمت مربوط به خود را دارا باشد.
نکته: به دلیل آنکه نحوه پیکربندی این فایل مانند پیکربندی فایل اصلی سرور ( httpd.conf )است تصمیمات بر اساس شرایط اخذ می شود. البته تمامی امکانات httpd.conf را شامل نمی شود!
عبارت ".htaccess " خود یک نام فایل است و دقیقا به همین صورت مورد استفاده قرار می گیرد. پس نیازی به اضافه کردن چیزی قبل از "." نیست. و عبارت " file.htaccess " قابل قبول نمی باشد!
برای اعمال پیکر بندی و تغییرات مورد نظر(محدودیت دسترسی، ریدایرکت و...) فقط کافی است فایل htaccess را در یکی از پوشه های دلخواه قرار دهید تا وب سرور آپاچی پس از بررسی دستورات موجود در این فایل تغییرات را برروی پوشه و پوشه های زیر مجموعه اعمال کند.
برای ایجاد این فایل در سیستم عامل لینوکس لازم است یک فایل را ایجاد کرده و سپس نام آن را به .htaccess تغییر دهیم. اما در ویندوز به دلیل آنکه این سیستم عامل از فرمت "پسوند.نام فایل" پشتیبانی می کند و هر حرفی بعد از "." را پسوند فایل می داند و طبیعتا نام فایل نمی تواند خالی باشد از فرمت .htaccess پشتیبانی نمی کند. برای حل این مشکل می بایست از یک ویرایشگر متن استفاده کرد و در مرحله ذخیره نام آن را به .htaccess تغییر نام دهیم.

چند نکته :

اگر از وب‏ سرور آپاچی برای وب‏ سایت خود استفاده می‏کنید، دیگر نیازی نیست برای هر مشکل جزئی و کوچک، با هاست تان تماس بگیرید. با یادگیری قابلیت‏های مهم فایل .htaccess، می‏توانید کنترل کامل وب‏سایت خود را برعهده بگیرید.

در هنگام استفاده از فایل .htaccess، دانستن سه نکته از اهمیت به ‏سزایی برخوردار است:

نکته اول: فایل .htaccess را می‏بایست به صورت ASCII آپلود کرده و مجوز دسترسی به آن را بر روی 644 (یا rw-r--r--) تنظیم نمایید.
نکته دوم: فایل .htaccess را می‏توانید به پوشه‏ های مختلفی اعمال نمایید. به عنوان مثال اگر آن را بر روی root آپلود نمایید، تنظیمات آن به کل وب‏سایت اعمال خواهد شد و اگر آن را درون پوشه‏ای نظیر images/ آپلود نمایید، تنظیمات آن به پوشه images و زیرپوشه ‏های آن اعمال خواهد شد.
نکته سوم: هر htaccess را می‏بایست درون یک خط تایپ نمایید. یعنی در انتهای هر دستور، می‏بایست یک‏بار کلید Enter را فشار دهید.

تبدیل http به https

برای اینکه آدرس سایت شما به جای http با https باز شود باید گواهی ssl روی هاست شما نصب باشد تا یک ارتباط امن ایجاد شود بعد از اینکه مطمئن شدید که گواهی نصب است اقدام به این کار کنید

ابتدا فایل htaccess را باز نمایید سپس کد زیر را در آن قرار دهید
کد: (Select All)
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}


عدم نمایش فایل های خاصی از سایت به url (ها)

می خواهیم کسی نتواند در یکی از پوشه های سایت، فایل های با پسوند:jpg,.gif,.css. را ببیند و همچنین در سایت خود قرار دهد و در واقع از قالبی که ما ساخته ایم استفاده کند.

نکته: برای اجرا شدن این درخواست به ماژول 'mod_rewrite' احتیاج می باشد. لذا باید این ماژول را فعال کنیم.

ابتدا فایل htaccess را باز نمایید سپس RewriteEngine on را پیدا و کد زیر را بعد از آن قرار دهید
کد: (Select All)
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC]
RewriteRule \.(gif|jpg|css)$ - [F]

این دستور تمام درخواست های استفاده و یا مشاهده فایل با پسوند jpg,gif,css را که از سایت
yourdomain.com نیستند را بلوکه می کند.
توجه: به جای آدرس yourdomain.com آدرس سایت خود را وارد نمائید.

نکته مفید برای کار با htaccess

در این پست چندین نکته مفید برای شما خواهم گفت، بسیاری از آنها می توانند وب سرور شما را در برابر حملات مختلف محافظت کنند و یکسری از آنها قادر هستند که وب سرور شما را در حالت بهینه نگه دارند و کارهای ساده ای مانند redirection را انجام دهند. این نکته را به یاد داشته باشید که باید برای تغییرات در این فایل دانش و آشنایی کافی داشته باشید، در غیر اینصورت از تغییرات در این فایل جدا خودداری نمایید.

موارد عمومی
-----------------------------------------------------------
نکات زیر شامل موارد ساده ای مانند redirection و بهینه سازی وب سرور می باشد :

تنظیم Timezone
بعضی اوقات، شما از توابع date یا mktime در PHP استفاده می کنید، پیغام خنده داری ممکن است به شما بدهد. این کد راه حل آن است. timezone را برای سرور خود ست می کنید. لیستی از timezone ها را می توانید در You are not allowed to view links. Register or Login to view. مشاهده کنید.
کد: (Select All)
SetEnv TZ Asia/Tehran
SEO Friendly
چرا SEO Friendly ? این روزها، همه موتورهای جستجوی مدرن قابلیت شناسایی 301 Permanent Redirect ها را دارند.
کد: (Select All)
Redirect 301 <a href="http://www.datisdesign.com">http://www.datisdesign.com/</a> http://www.datisdesign.com/
گذشتن از پیغام دانلود
کد: (Select All)
AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov
Skip WWW
یکی از نکات بهینه سازی برای موتورهای جستجو اطمینان از این نکته است که تنها یک آدرس است که به وب سایت شما اشاره می کند. بنابراین، شما نیاز دارید که همه ترافیک www را به سمت non-www ارجاع دهید و یا بالعکس :
کد: (Select All)
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www.datisdesign.com [NC] RewriteRule ^(.*)$ http://datisdesign.com/$1 [L,R=301]
صفحه های پیغام خطای سفارشی
برای هر یک از پیغامهای خطا یک صفحه سفارشی درست کنید :
کد: (Select All)
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php
فشرده سازی فایلها
بهینه سازی زمان لودشدن سایت خود را با فشرده کردن فایلها بهینه کنید :
کد: (Select All)
# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

Cache Files

کش کردن فایلها یکی دیگر از روشهای بهینه سازی سرعت لود وب سایت می باشد :
کد: (Select All)
<filesmatch>Header set Cache-Control &quot;max-age=2592000&quot; </filesmatch>

غیرفعال کردن کش برای یکسری از فایلها

برای بعضی از فایلها هم میتوانید کش را غیرفعال کنید :
کد: (Select All)
# explicitly disable caching for scripts and other dynamic files <filesmatch>Header unset Cache-Control </filesmatch>


موارد امنیتی

عدم نمایش لیست فایلها در یک پوشه

ممکنه برای شما هم پیش اومده باشه هنگامی که یه سری فایل در یک پوشه روی وب سایتتون دارید وقتی در مرورگر آدرس پوشه را تایپ میکنید میبینید که لیست فایلها نمایش داده میشه.در صورتی که نخواسته باشید کسی لیست فایلها رو ببینه میتونید از دستور زیر استفاده کنید

Options –Indexes

اجازه یا عدم اجازه دسترسی به سایت از طریق IP

برخی مواقع نیاز هست که فقط به کاربرانی با یک IP خاص اجازه دسترسی به سایت رو داشته باشن بدیم. یا مثلا اجازه ورود به یک IP رو به سایت ندیم. این در صورتی امکان پذیره که شما از آی پی طرف مقابل اطلاع داشته باشی و نکته دیگه این که اکثر کاربران اینترنت از آی پی های داینامیک استفاده میکنن و با هر بار اتصال به اینترنت آی پی متفاوتی دارن.به هر حال برای عدم دسترسی به سایت از دستور زیر استفاده میکنیم :
deny from 000.000.000.000

به جای ۰۰۰٫۰۰۰٫۰۰۰٫۰۰۰  آی پی مورد نر رو قرار میدیم . دقت کنید برای بلاک کردن کاربران یک کشور میتونید به صورت زیر عمل کنید ( رنج آی پی هر کشور مشخصه )
deny from 1.12.0.0/14

در دستور بالا آی پی ۱٫۱۲٫۰٫۰ تا آی پی ۱۲٫۰٫۰٫۱۴  که متعلق به کشور چین هست اجازه دسترسی به سایت رو ندارن.
در این سایت میتونید لیست آی پی مربوط به هر کشور رو مشاهده کنید.
http://www.countryipblocks.net

برای اجزه دادن فقط به یک IP از دستور زیر استفاده میکنیم :

allow from 000.000.000.000

 Hotlinking Protection

وقتی سایر کاربران از تصاویر سایت شما استفاده می کنند و تصاویر سایت شما را در سایتهای خود
قرار می دهند متنفرید ؟ این چند خط کد دست آنها را از سایت شما کوتاه خواهد کرد :

کدهای زیر برای بهینه کردن بخش امنیتی وب سرور شما می باشد. محافظت از hotlinking یکی از روشهای مفید برای جلوگیری استفاده سایر افراد از پهنای باند شما می باشد.


کد: (Select All)
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?queness.com/.*$ [NC]
RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]
جلوگیری از هک

اگر شما می خواهید درجه امنیت وب سایت خود را بالا ببرید، میتوانید این کدها را استفاده کنید تا جلوی هکرها را بگیرید :
کد: (Select All)
01    RewriteEngine On
02    
03    # proc/self/environ? no way!
04    RewriteCond %{QUERY_STRING} proc/self/environ [OR]
05    
06    # Block out any script trying to set a mosConfig value through the URL
07    RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
08    
09    # Block out any script trying to base64_encode crap to send via URL
10    RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
11    
12    # Block out any script that includes a <script> tag in URL
13    RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
14    
15    # Block out any script trying to set a PHP GLOBALS variable via URL
16    RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR]
17    
18    # Block out any script trying to modify a _REQUEST variable via URL
19    RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})
20    
21    # Send all blocked request to homepage with 403 Forbidden error!
22    RewriteRule ^(.*)$ index.php [F,L]
جلوگیری از دسترسی به فایل htaccess

این کد دسترسی سایر کاربران را به فایل htaccess شما محدود خواهد کرد :
کد: (Select All)
01    # secure htaccess file
02    <Files .htaccess>
03    order allow,deny
04    deny from all
05    </Files>
06    
07    # prevent viewing of a specific file
08    <Files secretfile.jpg>
09    order allow,deny
10    deny from all
11    </Files>
12    
13    # multiple file types
14    <FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
15    Order Allow,Deny
16    Deny from all
17    </FilesMatch>
جلوگیری از دسترسی به یک فایل خاص
<files myfile.php>
order allow,deny
deny from all
</files>


حذف category از آدرس وردپرسی شما :

شاید شما هم دوست داشته باشید کلمه /category/ رو از آدرس وردپرسی خودتون حذف کنید. این کار علاوه بر اینکه باعث جمع و جور شدن url شما میشه تاحدودی هم در سئو سایتتون موثر هست. البته با تغییر پیوند یکتای مربوط به category هم میشه که این کار رو افزونه های سئو برای شما انجام میدن و این کد رو محض یک راه حل بیرون از چهارچوب اصولی قرار دادم .

RewriteRule ^category/(.+)$ http://www.yourblog.com/$1 [R=301,L]


تغییر عنوان و پسوند فایل پیشفرض index در هنگام بارگذاری :

حتما تا حالا متوجه شدین که در هنگام فراخوانی یک آدرس پیشفرض یکی از  فایل های index.html یا index.php یا … بارگزاری میشن. حال اگه دوست داشتین این سنت رو بشکنین می تونین از کد زیر استفاده کنید. با قرار دادن اون هنگام فراخوانی به دنبال file.php میگرده و اگه نبود به دنبال  file.html خواهد بود.

DirectoryIndex file.php file.html

مخفی کردن فرمت ها/شناساندن فرمتهای جدید (add mime type) :

یک راه امنیتی که من واقعا پیشنهاد میکنم واسه حفاظت از اسکریپت های PHP شما این هست که آنها PHP نباشند! برای مثال: فایل PHP شما با فرمت ASP باز شود!!

AddType application/x-httpd-php .asp .jsp
 Addtype به ما می گوید که میخواهیم یک فرمت جدید بشناسانیم بعد نوع آن فایل های خاص با فرمت دلخواه خود میگوییم مثلا image/png یا text/css بعد میگوییم که چه فرمتی رو از این به بعد به عنوان نوعی که گفته ایم بشناس.
اما فرض کنید میخواهید از shtml/ssl در سایتتون استفاده کنید و نیاز به شناساندن این فرمتها به آپاچی دارین :


AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes

ریدایرکت/Redirect کردن :

Redirect /Dirold/old.html http://site.com/DirNew/new.html


تغییر نام فایل htaccess

شما می توانید فایل htaccess را هم تغییر نام دهید :
کد: (Select All)
AccessFileName htacc.ess
غیرفعال کردن دیدن دایرکتوری ها

نمایش دایرکتوری های وب سایت خود را غیر فعال کنید :
کد: (Select All)
1    # disable directory browsing
2    Options All -Indexes
3    
4    # enable directory browsing
5    Options All +Indexes
تغییر فایل پیش فرض index

شما می توانید فایل پیش فرض index.html, index.php یا index.htm را تغییر دهید :
هر یک از فایلی که شما بعد از DirectoryIndex قرار دهید صفحه پیش فرض ‌شما می شود

DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm

دسترسی کاربران را بسته به دامنه آنها محدود کنید
کد: (Select All)
1    # block visitors referred from indicated domains
2    <IfModule mod_rewrite.c>
3    RewriteEngine on
4    RewriteCond %{HTTP_REFERER} scumbag.com [NC,OR]
5    RewriteCond %{HTTP_REFERER} wormhole.com [NC,OR]
6    RewriteRule .* - [F]
7    
8    </ifModule>
دسترسی کاربران را بسته به User-Agent Header محدود کنید

این روش می تواند در مصرف پهنای باند شما صرفه جویی کند، جلوی بعضی از botها و spider ها را می گیرد :
کد: (Select All)
1    # block visitors referred from indicated domains
2    <IfModule mod_rewrite.c>
3    SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|col ​lector|grabber|webpictures) HTTP_SAFE_BADBOT
4    SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
5    Deny from env=HTTP_SAFE_BADBOT
6    </ifModule>
امنیت دایرکتوری ها توسط غیرفعال کردن اجرای اسکریپتها

کد: (Select All)
1    # secure directory by disabling script execution
2    AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
3    Options -ExecCGI



تلگرام

دسته بندی : SEO  هاستینگ  امنیت 
دنبالک ها: محدود کردن دسترسی به فایل در htaccess. 

برچسب ها:

نظرات() 
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر
نظرات پس از تایید نشان داده خواهند شد.