نماد سایت بیگ تم

کدهایی برای بهینه سازی فایل htaccess در وردپرس

فایل htaccess

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

کدهایی برای بهینه سازی فایل htaccess در وردپرس

دوستان عزیزی که شاید با این فایل آشنا نباشند ، اصلا جای نگرانی نیست چون که در این اموزش ودپرس با جزییات این فایل اشنا می شوید و در ادامه نکاتی مهم برای بهینه سازی این فایل وردپرس برای شما بیان می کنم ، پس به تعریف اجمالی از فایل htaccess توجه بفرمایید :

تعریف فایل htaccess :

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

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

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

دوستان عزیز برای این که تنظیمات بر روی تمامی پوشه های سایت اعمال شود از فایل htaccess در پوشه ی public_html می توانید استفاده نمایید . اگر این فایل در پوشه public_html شما نبودش شما باید از منوی سی پنل گزینه newfile را انتخاب نمایید و سپس .htaccess را وارد کنید

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

حال نوبت به دستورات بهینه سازی برای فایل .htaccess رسید :

شما می توانید برای ایجاد امنیت بیشتر و جلوگیری از دسترسی دیگران به اطلاعات فایل htaccess ، باید کد زیر را در ابتدای فایل htaccess کپی نمایید پس حتما باید امنیت این فایل مهم وردپرس را در نظر داشته باشید  :


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

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


Options All -Indexes

برای این که شما زبان پیش فرضی که استفاده می کنید به مرورگر اعلام نمایید ، آن را در قسمت هدر کدهای سایت قرار می دهید و شما می توانید با استفاده از قطعه کد زیر به آپاچی اعلام نمایید که صفحات را با زبان خاصی ارسال کنند و می تواند برای سئو سایت تاثیر مثبتی داشته باشد :


# 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


دوستان عزیز خطاهایی که در کد بالا مشاهده می کنید در اینجا به بیان هر کدام یک از آنها می پردازیم :
ارور 401 : دسترسی غیرمجاز به آدرس مورد نظر
ارور 403: دسترسی ممنوع به آدرس مورد نظر
ارور 404: آدرس مورد نظر یافت نشد
ارور 500: ایجاد خطای داخلی سرور

دوستان عزیز شما می توانید با استفاده از قطعه کدی که در این بخش می گویم از ارسال دیدگاه های اسپم به وب سایت خود جلوگیری نمایید زیرا این دیدگاه ها بسیار به سایت شما ارسال می شوند و حتما شما از این دیدگاه ها کلافه شده اید و می توانید از این طریق بعضی از IP ها را مسدود کنید ، پس این کد را در فایل htaccess  قرار بدهید :


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


حال دوستان توضیحاتی را درباره قطعه کد بالا برای شما می دهم که دقت نمایید :
اگر بار دیگری به قطعه کد بالا دقت نمایید دستور allow from all یعنی همه ی IP ها به ان هایی که محدود شده اند اجازه دسترسی دارند و اگر شما بخواهید فقط به یک IP خاصی اجازه دسترسی بدهید کافیه که آدرس آی پی مورد نظر را در مقابل دستور مذکور وارد نمایید همانند : allow from 188.50.38.144

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

دوستان عزیز نکته ی دیگری که در این جا وجود دارد شاید شما با قرار دادن <Limit GET POST> و </Limit>  در ابتدا و انتهای کد مشکلاتی را برا دسترسی ها ایجاد نمایید که در صورت بروز مشکل این دو مورد را از ابتدا و انتهای قطعه کد حذف نمایید .

دوستان عزیز شما می توانید با استفاده از افزونه اکیسمت از ورود اسپم ها به وب سایت خود جلو گیری نمایید که شما با نصب وردپرس می توانید این افزونه وردپرس را مشاهده کنید ولی می توانید با استفاده از قطعه کدی که در زیر مشاهده می نمایید از ارسال اسپم به سایت خودتون جلوگیری نمایید و در قطعه کد زیر به جای این yourblog.com باید ادرس سایت تون را وراد نمایید :


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/ از آدرس سایت چه فایده ای دارد ؟ شما با انجام این کار می توانید url سایت را کوتاه تر کنید و هم این که این کا در سئو وب سایت تاثیر مثبتی دارد ، البته شما می توانید با استفاده از افزونه های سئو وردپرس و با تغییر پیوند یکتای مربوط به category این کار را انجام بدهید و شما از می توانید از هر راهی که می خواهید این کار را انجام بدهید :


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

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


DirectoryIndex file.php file.html

دقت نمایید که اگر بتوانید از هر دو روش وارد وب سایت تون بشوید خیلی برای سئو سایت شما بد می باشد زیرا از روبات های گوگل اینطور تصور می کنند که مطالب یکسانی از دو دامنه متفاوت منتشر می شود که این باعث پایین آمدن ارزش سایت شما می شود اگر آدرس سایت شما بدون www باشد از نظر سئو بهتر است

زیرا دامنه سایت شما کوتاه تر می شود ولی اگر شما ادرس سایت تون با www می شود از فکر تغییر دادن آدرس سایت خود بیرون بیایید که این کار باعث می شود که شما تمامی ایندکس هایی که داشتین از بین برود و جز در مواردی که برای ایجاد این تغییرات ریدایرکت 301 در نظر گرفته شود.

شما برای این که دریابید که سایت شما به چه صورتی در گوگل ثبت شده است در جست و جوی گوگل site:yoursite.com و بار دیگر site:www.yoursite.com را جست و جو نمایید و باید در هر دو مورد آدرس خود را وارد نمایید و می توانید دریابید که به چه صورتی ثبت شده است. بعد از فهمیدن این موضوع نوبت به این میرسه که شما دامنه سایت خود را قفل نمایید ، قطعه کد زیر برای این هست که دامنه سایت تون را بدون www قفل کنید و کد زیر را در htaccess قرار دهید:


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]


شما می توانید برای افزایش امنیت و همچنین جلوگیری از دسترسی دیگران به اطلاعات و پایگاه داده سایت از قطعه کد زیر استفاده کنید و در htaccess قرار بدهید :


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


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


AddType application/x-httpd-php .asp .jsp

در این قطعه کد Addtype نشان می دهد که قرار است یک فرمت جدیدی بشناسیم و یا معرفی کنیم و بعد نوع آن فایل های خاص با فرمت مورد نظر خود را بیان می کنیم ، مثل text/css و سپس بیان می کنیم که چه فرمتی را از این ببعد به عنوان نوعی که گفتیم ، بشناسد !!!

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


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

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


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


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


php_value upload_max_filesize 20M


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


php_value post_max_size 2M

requast time بیانگر حداکثر زمان درخواستی برای فراخوانی یک صفحه می باشد که در قطعه کد زیر مشاهده می کنید :


php_value max_execution_time 200

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


php_value max_input_time 250

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


RewriteEngine On
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
<ifModule mod_deflate.c>
<filesMatch "\.(css|js|x?html?|php|woff|ttf|png|jpg|gif)$">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>
# END Compress text files


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


# 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


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


<IfModule mod_php.c>
php_value suhosin.post.max_vars 7000
php_value suhosin.request.max_vars 7000
</IfModule>

شما اگر می خواهید امنیت اطلاعات و محتوای پوشه 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]


سخن آخر

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

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

منبع: بیگ تم مرجع اموزش وردپرس و افزونه وردپرس و قالب وردپرس

خروج از نسخه موبایل