دانشنامه ناریا
جمعه ۱۰ فروردین ۱۴۰۳
تاریخ امروز:
نوشته ها:
درباره ناریا:
در صورتی که مطلب مورد نظر خود را در ناریا پیدا نکردید از جستجوگر سایت برای یافتن آن تلاش کنید.



فایل htaccess چیست؟

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

htaccess

.htaccess یک فایل مخفی هست که می تونه در هر فولدری باشه و همانطور که ذکر شد عملیات های سرور مربوط به آن فولدر و زیر شاخه هایش رو تنظیم میکنه، مثلا میتوانید دسترسی یه سری فایل ها را محدود کنید تا از اون فایل ها محافظت بشه ، URL را تنظیم کنید یا مدریت فایلهای قابل کش و خصوصیات انها بپردازید و…

این فایل در سرور به صورت فایل مخفی هست و برای نمایش اون کافی هست مثلا در سی پنل ، هنگامی که بر file manager کلیک میکنید تیک گزینه show hide files را فعال کنید تا بعد از باز شدن پنجره مدیریت فایلها تمام فایل های مخفی قابل رویت باشن.
آموزش htaccess ، امنیت و مدیریت بهینه وردپرس با آن

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

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

خوب حالا نوبت این میرسه بریم ببینیم چه کارهایی رو میشه با این فایل انجام داد:

۱) محافظت از خود فایل .htaccess :

برای جلوگیری از سرقت اطلاعات خود فایل htaccess کد زیر رو در ابتدای فایل htaccess قرار بدین :
<files “.htaccess”>
order allow,deny
deny from all

۲) جلوگیری از سرقت فایلهای و فولدرهای درون هاست :

بیشتر وقتها اطلاعاتی مثل فایل های قالب اختصاصی شما که بر روی هاست قرار دارند و یا فایل هایی که به صورت zip شده در هاست خود ذخیره کرده اید به راحتی با مرور هاست شما توسط سایرین کشف و به سرقت میره برای جلوگیری از این امر کد زیر رو در انهای فایل htaccess قرار بدین.
Options All -Indexes

۳) معرفی زبان پیشفرض (DefaultCharset) :

برای اینکه زبان پیشفرض استفاده شده رو به مرورگر ها بگین بیشتر وقتها اون رو در قسمت هدر کدهای سایت قرار میدین. با دستور کوتاه زیر به آپاچی میگیم که همیشه صفحات را با زبان خاصی ارسال کن. این عمل برای سئو سایت تاثیری خوبی داره.
# pass the default character set
AddDefaultCharset utf-8

۴) تعیین صفحات سفارشی برای صفحات خطا:

با دستور زیر می توانید صفحاتی رو که برای نمایش هنگام ایجاد خطا، طراحی و در پوشه error قرار دادین رو جایگزین صفحات خطای پیشفرض سرور کنید و خطای مورد نظر خودتون رو به کاربر نشون بدین. معرفی و تعیین صفحات خطا برای سئو سایت تاثیر خوبی داره.
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

چند خطای آپاچی برای نمونه :

خطای ۴۰۱ : دسترسی به آدرس وارد شده غیر مجاز است.
خطای ۴۰۳: دسترسی به این آدرس ممنوع می باشد.
خطای ۴۰۴: آدرس مورد نظر یافت نشد.
خطای ۵۰۰: خطای داخلی سرور بوجود آمده است.

۵) بن کردن اسپمر ها با .htaccess (محدودیت دسترسی از طریق آی پی) :

چون دیدگاه های اسپم واقعا روی اعصاب هستند و مخصوصا اگر سایتتان پیشرفت داشته باشه این دیدگاه ها به صورت وحشیانه هجوم میارند که ما کلا میخواهیم آی پی اون ها رو مسدود کنیم.
order allow,deny
deny from 200.49.176.139
allow from all

دستور “allow from all” یعنی همه آی پی ها بجز آی پی های مسدود شده دسترسی دارند. اگه بخوایم فقط به آی پی هاصی اجازه دسترس بدیم کافیه به این کدی به این شکل وارد کنید “allow from 188.50.38.143″ و به جای آی پی درج شده آی پی مورد نظر خودتون رو وارد کنید.

با دستور “deny from 200.49.176.139″ هم اجازه دسترسی این آی پی رو میگیرم که می تونید به هر تعداد که خواستین از اون زیر هم اضافه کنید. با این کد هم دیگه هیچ آی پی اجازه ورود نخواهد داشت حتی خود شما “deny from all”.

نکته : بعضی مواقق قرار دادن “” و “” در ابتدا و انتهای تعیین دسترسی ها مشکلاتی رو ایجاد میکنه که در این صورت اونها رو از ابتدا و انتهای کدها بردارین.

۶) جلوگیری از ارسال دیدگاه اسپم در وردپرس :

افزونه اکیسمت افزونه شناخته شده ای در زمینه جلوگیری از ارسال اسپم هست که در بسته اصلی خود وردپرس هم وجود داره اما شما میتونید با استفاده از کد زیر از ارسال هرزنامه به وبسایتتان جلوگری کنید دقت داشته باشید که در خط چهارم آدرس سایت خودتون رو وارد کنید.
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

۷) حذف 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

۹) ورود به سایت با www یا بدون www :

اینکه سایت از هر دو روش امکان بارگزاری داشته باشه یعنی باید فاتحه سئو سایتتون رو بخونین چون در اینصورت روبوت های گوگل فکر میکنن دو دامنه یک مطلب را منتشر میکنه و از ارزش هر دو کم میکنن، طبق تجربه برای سئو بهتره سایت بدون www باشه دلیلش هم کوتاه شدن دامنه هست ولی تا یادم نرفته بگم تا تو دردسر نیوفتین :D ، اگه تا حالا سایتتون با www بود و ایندکس هایی که تو گوگل دارین به این صورت ذخیره شدن از فکر عوض کردنش در بیاین چون نتیجه ای جز از دست دادن تمام ایندکس هایی که داشتین براتون نداره.

اگه میخواین بفهمین سایتون به چه صورت تو گوگل ثبت شده بهتره در جستجوی گوگل این متن رو وارد کنید(به جای yoursite.com دامنه خودتون رو وارد کنید) “site:yoursite.com” و یک بار هم “site:www.yoursite.com” رو وارد کنید با نتیجه جستجو میتونین بفهمین گوگل از چه شکل سایتتون خوشش می آد :)

خوب حالا برای اینکه دامنه سایتتون بدون www قفل کنید کافیست کد زیر را در htaccess قرار دهید (البته آدرس دامنه خودتا را بجای yoursite.com در خط دوم و سوم وارد کنید) :
RewriteEngine On
RewriteCond %{HTTP_HOST} !^yoursite\.com$ [NC]
RewriteRule ^(.*)$ http://yoursite.com/$1 [R=301,L]

و برای قفل کردن دامنه فقط با www از این کد استفاده کنید:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

۱۰) بالا بردن امنیت فایل wp-config در htaccess :

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

order allow,deny
deny from all

۱۱) مخفی کردن فرمت ها/شناساندن فرمتهای جدید (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 کردن :

اونقده مردم اومدن با جاوا اسکریپت و امثال اون آدرس ها رو به آدرس های دیگه ای ریدایرکت کردن آخر سر این کد به جاش به وجود اومد :D
Redirect /Dirold/old.html http://site.com/DirNew/new.html

۱۳) محدود کردن نوع فایلهای قابل اجرا و نمایش :

برای حفظ امنیت و اطلاعات سایتتون می تونید پسوند فایل هایی که بتوان بازشون کرد رو تعیین کنید :
Options +FollowSymlinks
RewriteEngine On
rewritecond %{REQUEST_FILENAME} !^(.+).css$
rewritecond %{REQUEST_FILENAME} !^(.+).js$
rewritecond %{REQUEST_FILENAME} !file.php$
RewriteRule ^(.+)$ /deny/ [nc]

توضیح : با کد بالا کاربر فقط اجازه باز کردن فایل هایی با پسوند css , js و php رو داره و در صورت درخواست سایر پسوند ها ریدایرکت میشه به پوشه deny.

۱۴) ایجاد محدودیت در آپلود فایل :

با کد زیر حداکثر حجم فایل قابل آپلود رو ۲۰ مگابایت تنظیم کردیم.
php_value upload_max_filesize 20M

۱۵) ایجاد محدودیت در حجم پست ارسالی :

با کد زیر میشه حداکثر حجم هر پست رو ۲ مگابایت تعیین کرد:
php_value post_max_size 2M

۱۶) نمایش پیغام requast time در بازه زمانی مشخص:

requast time حداکثر زمانی درخواست فراخوانی یک صفحه هست :
php_value max_execution_time 200

۱۷) حداکثر زمان دریافت اطلاعات POST و GET :
php_value max_input_time 250

۱۸) جلوگیری از سرقت پهنای باند و فایلها و عکسها :

خیلی وقت ها اتفاق می افته میدران سایتهای دیگر آدرس عکس یا فایلهای شما رو کپی میکنن و تو سایت خودشون استفاده میکنن. با این عمل در حقیقت در هنگام درخواست برای نمایش اونها این درخواست به سرور شما ارسال میشه و در نهایت ار پهنای باند شما کاسته میشه برای جلوگیری از این کار و ایجاد محدودیت برای نمایش فایلهاتون کد زیر رو در فایل htaccess قرار بدین:
RewriteEngine On RewriteBase / RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER}!^http://(www\.)site.com/.*$ [NC]

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

۱۹) فعال کردن قابلیت Gzip :

وقتی کاربری از طریق مروگر سایتش درخواست نمایش سایت شما رو میده این درخواست به سرور شما ارسال میشه و سرور فایلهایی که برای نمایش سایت شما لازم هست رو جمع میکنه و به مرورگر کاربر میفرسته و سایت شما نمایش داده میشه، ولی اگه از قابلیت Gzip استفاده کنید هنگام درخواست سرور فایلهای مورد نیاز رو به صورت فشرده در می یاره و این فایل فشرده رو به مرورگر ارسال میکنه و بعد از خارج شدن از حالت فشرده در سیستم کاربر سایت شما نمایش داده میشه. در حقیقت میزان حجمی که باید توسط مرورگر برای نمایش سایت شما دریافت شه کمتر میشه واین یعنی افزایش قابل توجه سرعت بارگزاری سایت. برای اینکه چک کنید که هاست شما از این قابلیت پشتیبانی میکنه از این ابزار استفاده کنید. اگه پشتیبانی نمیکنه باید هاست رو عوض کنید و اگر پشتیبانی کرد کد زیر رو برای فعال شدنش روی سایت خودتون در فایل htaccess قرار بدین ( این کدی هست که من برای سایت خودم استفاده میکنم شما میتونین پسوند های مورد نظر خودتون رو با پسوند های درج شده در اینجا تعویض کنین)
# BEGIN Compress text files

<filesMatch “\.(css|js|x?html?|php|woff|ttf|png|jpg|gif)$”>
SetOutputFilter DEFLATE

# END Compress text files

۲۰) مدیریت Cache فایلها :

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

کدی که در پاین قرار دادم کدی هست که من خودم دارم ازش استفاده میکنم و به مرور کامل شده و شما می تونید از هر بخش اون بنا به نیاز خودتون استفاده کنین :
# BEGIN Expire headers

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”

# END Expire headers

# BEGIN Cache-Control Headers

<filesMatch “\.(ico|jpe?g|png|gif|swf|woff|ttf)$”>
Header set Cache-Control “max-age=2592000, public”

<filesMatch “\.(css)$”>
Header set Cache-Control “max-age=2592000, public”

<filesMatch “\.(js)$”>
Header set Cache-Control “max-age=2592000, private”

<filesMatch “\.(x?html?|php)$”>
Header set Cache-Control “max-age=600, private, must-revalidate”

# END Cache-Control Headers

# BEGIN Turn ETags Off

Header unset ETag

FileETag None
# END Turn ETags Off

# BEGIN Remove Last-Modified Header

Header unset Last-Modified

# END Remove Last-Modified Header

۲۱) حل مشکل تعداد آیتم های فهرست وردپرس :

اگه دقت کرده باشین هنگام ساخت فهرست دسته ها به صورت دستی از یه جایی به بعد دیگه هر چی اضافه میکنین بعد ذخیره می بینین اضافه نشده برای حل این محدودیت کد زیر رو تو فایل htaccess قرار بدین :

php_value suhosin.post.max_vars 7000
php_value suhosin.request.max_vars 7000

۲۲) افزایش امنیت محتوای فولدر wp-includes :

کافیه کد زیر رو در htaccess قرار بدین :
# Block the include-only files.
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ – [F,L]
RewriteRule !^wp-includes/ – [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ – [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php – [F,L]
RewriteRule ^wp-includes/theme-compat/ – [F,L]

منبع : ماندگار وب

شادی در ۲۱ - مرد - ۱۳۹۳

پاسخ دادن