فایل htaccess چیست؟ چه کدهایی در آن قرار می گیرد؟

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

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

این فایل به صورت پسوند است یعنی .htaccess و هیچ اسمی ندارد و برای کنترل آپاچی ، روی یک شاخه و تمامی زیر شاخه ها دستور صادر می کند. در حقیقت htaccess در کنار فایل های HTML یا PHP قرار می‌گیرند و در هر پوشه های که باشد عملیات مربوط به سرورهای آن پوشه و تمامی زیر شاخه های آن را کنترل می کند.

این فایل به صورت خودکار در cms های متعددی به طور خودکار ایجاد می شود و در مسیر public_html قرار دارد. در هاست های cpanel این فایل به صورت پنهان است و به صورت پیش فرض قابل مشاهده نیست. برای مشاهده در پوشه File Manager در گوشه بالا سمت راست صفحه بر روی دکمه Settings کلیک کنید تا پنجره پاپ آپ مربوط به تنظیمات فایل منیجر نمایش داده شود. در پنجره پاپ آپ باز شده تیک گزینه Show Hidden Files را بزنید و روی save کلیک کنید. با این تغییر پس از ذخیره می‌توانید وارد پوشه public_html شوید و فایل htaccess را مشاهده نمایید.

در ادامه مهم ترین کدهای مربوط به سئو و امنیت سایت که می توانیم در htaccess قرار دهیم را به شما معرفی می کنیم.

 

تعیین زبان پیش فرض سایت

البته این مورد با قرار دادن کد در قسمت header سایت نیز قابل انجام است اما در htaccess هم می توانید آن را تنظیم کنید. این کد زبان سایت را مشخص می کند که برای سئو مفید است.

[php]# pass the default character set
AddDefaultCharset utf-8[/php]

 

جلوگیری از دسترسی دیگران به htaccess

برای این که از دسترسی هکرها این فایل را در امان نگهدارید باید دسترسی آن را برای همه محدود کنید. کد زیر این کار را برایتان انجام می دهد.

[php]<files ".htaccess">
order allow,deny
deny from all
</files>[/php]

اگر می خواهید به جای صفحات خطای سرور ، صفحات اختصاصی که خودتان ساخته اید به کاربر نمایش داده شود می توانید از کد زیر استفاده کنید ، در دستور زیر صفحات خطا در پوشه ای به نام error قرار دارند. اگر نمی دانید هرکدام از ارورها چه معنایی دارند می توانید در ادامه با آن ها آشنا شوید:

ارور 401 : دسترسی غیرمجاز به آدرس مورد نظر

ارور 403: دسترسی ممنوع به آدرس مورد نظر

ارور 404: آدرس مورد نظر یافت نشد

ارور 500: ایجاد خطای داخلی سرور

[php]ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php[/php]

 

پاک کردن category از url های سایت

همانطور که می دانید url های یک سایت همیشه باید تمیز و منظم باشند ، وردپرس به صورت پیشفرض برای دسته بندی ها شاخه category را ایجاد می کند که برای کوتاه تر شدن آدرس ها می توانیم category را از url دسته بندی ها حذف کنیم.

[php]

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

 

 مسدود کردن آی پی اسپمرها

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

[php]

<Limit GET POST>
order allow,deny
deny from 200.49.176.139
allow from all
</Limit>

[/php]

دستور allow from all یعنی همه ی IP ها به جز آن هایی که مسدود شده اند اجازه دسترسی دارند و اگر شما بخواهید فقط به یک IP خاصی اجازه دسترسی بدهید کافیست که آدرس آی پی مورد نظر را در مقابل دستور مذکور وارد کنید ، مثل : allow from 188.50.38.144 و اما با استفاده از دستور deny from 200.49.176.139 هم به آی پی دیگری اجازه دسترسی می دهید که می‌توانید هر تعداد آی پی دیگری هم خواستید وارد نمایید و با این کد هم دیگر هیچ آی پی اجازه دسترسی نخواهد داشت حتی آی پی خودتان “deny from all”.

 

ریدایرکت 301 از نشانی با www به بدون www

اگر سایت هم با www و بدون آن باز شود برای سئو یک فاجعه است ، گوگل در این حالت ، دو دامنه مجزا تشخیص می دهد که محتوای مشابه و یکسان دارند و سایت شما نابود خواهد شد ، بنابراین یکی از روش های رفع این مشکل استفاده از کد در فایل htaccess است.

[php] RewriteEngine On
RewriteCond %{HTTP_HOST} !^yoursite\.com$ [NC] RewriteRule ^(.*)$ [R=301,L] [/php]

 

 امنیت فایل wp-config.php

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

[php] <files wp-config.php>
order allow,deny
deny from all
</files>
[/php]

 

 ایجاد محدودیت برای دسترسی به انواع فایل ها در سایت

شما می توانید برای دسترسی فایل های کل سایت محدودیت ایجاد کنید ، مثلا نگذارید کاربران به فایل های php , js , css دسترسی داشته باشند.

[php] Options +FollowSymlinks
RewriteEngine On
rewritecond %{REQUEST_FILENAME} !^(.+).css$
rewritecond %{REQUEST_FILENAME} !^(.+).js$
rewritecond %{REQUEST_FILENAME} !file.php$
RewriteRule ^(.+)$ /deny/ [nc] [/php]

 

 رفع محدودیت آپلود وردپرس

شما می توانید میزان حجم آپلود فایل ها در وردپرس را با استفاده از کد زیر مدیریت کنید ، مقدار پیشفرض آپلود فایل ها در وردپرس 12 مگابایت است.

[php] php_value upload_max_filesize 20M
[/php]

 

 ایجاد محدودیت در حجم پست ارسالی

همانطور که می دانید اگر حجم یک صفحه زیادی باشد منجر به کاهش سرعت لود خواهد شد که برای سئو خوب نیست ، بنابراین شما می توانید برای حجم صفحات محدودیت ایجاد کنید. در کد زیر محدودیت روی 2مگابایت تنظیم شده است.

[php] php_value post_max_size 2M
[/php]

 

 جلوگیری از سرقت پهنای باند

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

[php] RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?site.com/ .*$ [NC] RewriteRule \.(gif|jpg|swf|flv|png)$ /feed/ [R=302,L] [/php]

 

 فعالسازی قابلیت Gzip

یکی از واجب ترین کارها برای افزایش سرعت بارگزاری و همچنین کاهش مصرف پهنای باند ، قابلیت Gzip صفحات سایت تان را در سرور به صورت فشرده درمی آورد و به مرورگر منتقل می کند که باعث افزایش چشم گیر سرعت می شود.

[php] # BEGIN Compress text files
<ifModule mod_deflate.c>
<filesMatch "\.(css|js|x?html?|php|woff|ttf|png|jpg|gif)$">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>
# END Compress text files
[/php]

 

ایجاد قابلیت کش Cache

در هر بار بارگزاری صفحات سایت در مرورگر بازدیدکنندگان ، بسیاری از فایل ها هستند که به صورت تکراری لود می شوند ، چون در تمامی صفحات سایت یکسان هستند مانند css , js و . . . که می توانیم با فعالسازی قابلیت کش این فایل ها را در دفعه اول بارگزاری در مرورگر مخاطب ذخیره کنیم تا در مرتبه دوم دیگر این فایل ها از سرور بارگزاری نشوند. بنابراین افزایش چشمگیر سرعت را به وضوح می بینیم. توجه داشته باشید که به کار بردن کدهای کش واقعا ریسک بزرگی است چراکه با یک اشتباه کوچک کل سایت با مشکل مواجه می شود ، پیشنهاد ما برای این کار استفاده از افزونه راکت وردپرس است که به صورت خودکار کدهای کش را به htaccess اضافه می کند و پنل قدرتمندی برای مدیریت کش دارد.

[php] # BEGIN Expire headers
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/x-javascript "access plus 1 year"
ExpiresByType text/html "access plus 600 seconds"
ExpiresByType application/xhtml+xml "access plus 600 seconds"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
</ifModule>
# END Expire headers
# BEGIN Cache-Control Headers
<ifModule mod_headers.c>
<filesMatch "\.(ico|jpe?g|png|gif|swf|woff|ttf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch "\.(css)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch "\.(js)$">
Header set Cache-Control "max-age=2592000, private"
</filesMatch>
<filesMatch "\.(x?html?|php)$">
Header set Cache-Control "max-age=600, private, must-revalidate"
</filesMatch>
</ifModule>
# END Cache-Control Headers
# BEGIN Turn ETags Off
<ifModule mod_headers.c>
Header unset ETag
</ifModule>
FileETag None
# END Turn ETags Off
# BEGIN Remove Last-Modified Header
<ifModule mod_headers.c>
Header unset Last-Modified
</ifModule>
# END Remove Last-Modified Header
[/php]

 

امنیت بخش مدیریت وردپرس

اگر می خواهید برای ورود به وردپرس تعداد محدودی ip در نظر بگیرید می توانید از کد زیر استفاده کنید.

 

[php] AuthUserFile/dev/null
AuthGroupFile/dev/null
AuthName"WordPress Admin Access Control"
AuthType Basic
order deny,allow
deny from all
# whitelist Syed’s IP address
allow from xx.xx.xx.xxx
# whitelist David’s IP address
allow from xx.xx.xx.xxx
# whitelist Amanda’s IP address
allow from xx.xx.xx.xxx
# whitelist Muhammad’s IP address
allow from xx.xx.xx.xxx
# whitelist Work IP address
allow from xx.xx.xx.xxx
[/php]

به جای xx.xx.xx.xxx باید آی پی یا آی پی هایی را که اجازه ورود دارند با وارد کنید.

 

غیرفعال کردن راهنمای مرورگر در وردپرس

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

[php] Options-Indexes
[/php]

 

در این مطلب سعی کردیم تمامی کدهای موثر در امنیت و سئو که توسط فایل htaccess ایجاد می شود را بررسی کنیم. اگر کدی هست که در این مطلب قرار ندادیم می توانید در قسمت کامنت ها ذکر کنید تا این مطلب کامل تر شود.

 

5/5 - (1 امتیاز)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *