ترفند و نکات htaccess

مقدمه

بعضی از کاربران هاست لینوکس ممکن است از قدرت های htaccess آگاهی نداشته باشند من در این مقاله ۱۷ ترفند htaccess برای شما بیان می کنم که خودم از آنها استفاده و یا آنها را تست کردم و بعضی از این ترفندها برای حفاظت وب سرور شما از حملات هکرها ضروری میباشند و بعضی دیگر قادر به انجام کارهای ساده و مؤثر از قبیل تغییر مسیر بهینه سازی وب سرور و وب سایت خواهند بود.

Htaccess ها زیر قادر خواهند بود تا برای تغییر مسیر و بهینه سازی وب سرور به سادگی کمک کنند.

۱ – تنظیم منطقه زمانی:

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

SetEnv TZ Australia/Melbourne

2 – مطلب SEO و ۳۰۱ مسیر تغییر دائمی:

امروزه بعضی از موتورهای جستجوی مدرن قابلیت شناسایی ۳۰۱ تغیر مسیر دائمی را دارند و رکوردهای موجود را بروز رسانی می کنند.

 

3 – بر کنار کردن دیالوگ دانلود:

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

AddType application/octet-stream .pdf

AddType application/octet-stream .zip

AddType application/octet-stream .mov

4 – حذف WWW

یکی از دستور العمل ها SEO این است که اطمینان حاصل کنید که فقط یک URL به وب سایت شما اشاره کند بنابراین شما نیاز خواهید داشت که همه ترافیک WWW را به مسیر غیر WWW تغیر مسیر دهید. برای این کار از کچ های زیر استفاده کنید.

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} ^www.datatak.ir [NC]

RewriteRule ^(.*)$ http://datatak.ir/$1 [L,R=301]

5 – سفارشی کردن صفحه خطا:

ایجاد یک صفحه خطای سفارشی برای هر یک از کدهای خطا

ErrorDocument 401 /error/401.php

ErrorDocument 403 /error/403.php

ErrorDocument 404 /error/404.php

ErrorDocument 500 /error/500.php

6 – فشرده سازی فایل ها:

بهینه سازی وقت بارگیری وب سایت را با فشرده سازی فایل ها به اندازه های کوچیک تر می توانید انجام دهید.

# 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

7 – فایل های ذخیره سازی (Cache files ):

ذخیره فایل یکی دیگر از روش ها معروف در زمان بهینه سازی وب سایت در حال بارگذاری میباشد.

<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>

Header set Cache-Control “max-age=2592000″

</FilesMatch>

8 – غیر فعال کردن ذخیره سازی برای نوع خاصی از فایل ها:

شما می توانید ذخیره سازی برای نوع خاصی از فایل ها را غیر فعال کنید.

# explicitly disable caching for scripts and other dynamic files

<FilesMatch “.(pl|php|cgi|spl|scgi|fcgi)$”>

Header unset Cache-Control

</FilesMatch>

امنیت

کدهای htaccess بعدی قادر خواهند بود تا سطح امنیت وب سرور شما را ارتقاط دهند. حفاظت Hotlinking برای جلوگیری از استفاده از تصاویری که در وب سرور ذخیره شده اند بسیار مفید میباشد.

۱ – حفاظت Hotlinking با htaccess

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

RewriteBase /

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www.)?joomir.com/.*$ [NC]

RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

2 – جلوگیری از هک کردن وب سایت خود

اگر شما می خواهید سطح امنیت وب سایت خود را ارتقاط دهید از کد های زیر استفاده کنید این کدها بعضی از تکنیک های هک را با کشف کردن URL مخرب جلوگیری خواهند کرد.

RewriteEngine On

# proc/self/environ? no way!

RewriteCond %{QUERY_STRING} proc/self/environ [OR]

# Block out any script trying to set a mosConfig value through the URL

RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]

# Block out any script trying to base64_encode crap to send via URL

RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]

# Block out any script that includes a <script> tag in URL

RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]

# Block out any script trying to set a PHP GLOBALS variable via URL

RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR]

# Block out any script trying to modify a _REQUEST variable via URL

RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})

# Send all blocked request to homepage with 403 Forbidden error!

RewriteRule ^(.*)$ index.php [F,L]

3 – مسدود کردن دسترسی به فایل htaccess خود

کد زیر از دسترسی کاربر به فایل htaccess جلوگیری خواهد کرد. همچنین شما می توانید فایل ها متعددی را هم مسدود کنید.

# secure htaccess file

<Files .htaccess>

order allow,deny

deny from all

</Files>

# prevent viewing of a specific file

<Files secretfile.jpg>

order allow,deny

deny from all

</Files>

# multiple file types

<FilesMatch “.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>

Order Allow,Deny

Deny from all

</FilesMatch>

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

شما می توانید نام فایل htaccess را به چیز دیگری برای جلوگیری از دسترسی دیگران تغیر دهید.

AccessFileName htacc.ess

5 – غیر فعال کردن براوز کردن دایرکتوری

از نمایش دادن شاخص دایرکتوری توسط سرور جلوگیری کنید.

# disable directory browsing

Options All -Indexes

# enable directory browsing

Options All +Indexes

6 – تغیر صفحه پیش فرض ایندکس

شما می توانید صفحه پیش فرض index.html یا index.php و یا index.htm به چیز دیگری تغییر دهید.

DirectoryIndex business.html

7 – مسدود کردن بازدید کننده ناخواسته بر اساس اشاره دامنه

# block visitors referred from indicated domains

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{HTTP_REFERER} scumbag.com [NC,OR]

RewriteCond %{HTTP_REFERER} wormhole.com [NC,OR]

RewriteRule .* – [F]

</ifModule>

8 – مسدود کردن درخواست بر اساس سربرگ User-Agent

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

# block visitors referred from indicated domains

<IfModule mod_rewrite.c>

SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT

SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT

Deny from env=HTTP_SAFE_BADBOT

</ifModule>

9 – امن کردن دایرکتوری ها با غیر فعال کردن اسکریپت ها execution

# secure directory by disabling script execution

AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi

Options -Ex