فایل .htaccess چیست و چه کاربردی دارد ، فایل .htaccess یکی از مهم ترین فایلهای کاربردی در سایت می باشد در ادامه به بررسی آن و معرفی کد های کاربردی در این فایل می پردازیم در تمامی سیستم های تحت وب که عموما با زبان برنامه نویسی html و یا php نوشته شده اند و روی سرور لینوکس میزبانی می شوند، برای ایجاد پیکربندی در دایرکتوری ها و پوشه ها روی وب سرور آپاچی از فایل .htaccess کمک گرفته می شود. این فایل در زمان عدم دسترسی به root سرور برای کنترل آپاچی بسیار مفید است.
فایل .htaccess بی نام است و صرفا با پسوند .htaccess شناساسیی می شود. این فایل را با نام distributed configuration files می شناسند .
از دسترسی هایی که با استفاده از این فایل می توانید به آنها برسید :
1.کنترل ریدایرکت
2.کنترل دسترسی فیزیکی به فایلها و پوشه ها
3.کنترل نمایش خطاهای Apache
4.تنظیمات URL Rewrite
5.مسدود کردن یک یا چند IP خاص یا یک رنج IP
6.گذاشت پسورد بر روی پوشه ای خاص
7.تنظیمات کش و Expire Date آن
8.اعمال برخی تغییرات در تنظیمات پیش فرض PHP، MySQL و Apache
9.جلوگیری از نمایش تمامی فایلها یا یک یا چند فایل با پسوندی خاص
10.انتقال صفحات به صفحه ای خاص
11. معرفی یک Default Document در پوشه ای خاص
12. تنظیم Default Charset
استفاده از این فایل در همه موارد پیشنهاد نمی شود چراکه در کنار قابلیت های فراوان استفاده از این فایل، با فعال کردن یک تابع احتمال هک شدن وب سایت افزایش خواهد یافت و راه نفوذ هکرها به هاست میزبان عموما از طریق توابع فعال در فایل .htaccess هموار می شود.
تنظیماتی که در فایل .htaccess قرار داده می شود بر روی پوشه جاری و زیر پوشه های آن اعمال می گردد و با قرار دادن یک فایل .htaccess دیگر در زیر پوشه ای خاص تنظیمات پوشه والد نقض می شود.
آموزش htaccess
فایل htaccess چیست؟
امروزه در اکثر سیستمهای مدیریت محتوا مثل وردپرس یا جوملا یک فایل در شاخه اصلی هاست به اسم htaccess هست. این فایل رو در حقیقت با نام distributed configuration files میشناسند و در واقع برای کنترل آپاچی هستند که روی یک شاخه و تمام زیر شاخه های آن عمل میکنه. این فایلها برای کارکرد در کنار فایلهای معمولی HTML یا PHP قرار میگیرن، میشه گفت این فایل اسم نداره بلکه فقط از بخش پسوند تشکیل شده و به صورت .htaccess دیده میشه.
.htaccess یک فایل مخفی هست که میتونه در هر فولدری باشه و همانطور که ذکر شد عملیات های سرور مربوط به آن فولدر و زیر شاخه هایش رو تنظیم میکنه، مثلا میتوانید دسترسی یه سری فایل ها را محدود کنید تا از اون فایلها محافظت بشه، URL را تنظیم کنید یا مدریت فایلهای قابل کش و خصوصیات آنها بپردازید و…
این فایل در سرور به صورت فایل مخفی هست و برای نمایش اون کافی هست مثلا در سی پنل، هنگامی که بر file manager کلیک میکنید تیک گزینه show hide files را فعال کنید تا بعد از باز شدن پنجره مدیریت فایلها تمام فایلهای مخفی قابل رویت باشن.
show-folder-filemanager
آموزش htaccess، امنیت و مدیریت بهینه وردپرس با آن
در این آموزش برای اینکه تنظیمات برای تمام فولدرهای بخش اصلی سایت اعمال بشه ،من از فایل htaccess موجود در فولدر public_html استفاده میکنم. حال اگه این فایل در پوشه public_html شما وجود نداشت کافی هست از منوی سی پنل گزینه newfile را رو انتخاب کنین و سپس .htaccess را وارد کنید، باز تاکید میکنم این فایل نام نداره و نقطه را باید در ابتدای محل درج عنوان وارد کنید و سپس عبارت htaccess رو تایپ کنید.
اگه هم این فایل از پیش موجود بود بهتره یه کپی از اون رو به عنوان بک آپ ذخیره کنید. و در صورت وجود کد داخل اون بهتره در آخر خط یک بار اینتر رو بزنید و دستورات آموزش داده شده در اینجا رو بعد اون وارد کنید. (البته بعضی وقتها لازمه یه کد در ابتدای فایل قرار بگیره که به جاش توضیح میدم)
خوب حالا نوبت این میرسه بریم ببینیم چه کارهایی رو میشه با این فایل انجام داد:
1) محافظت از خود فایل .htaccess :
برای جلوگیری از سرقت اطلاعات خود فایل htaccess کد زیر رو در ابتدای فایل htaccess قرار بدین:
<files ".htaccess">
order allow,deny
deny from all
</files>
2) جلوگیری از سرقت فایلهای و فولدرهای درون هاست :
بیشتر وقتها اطلاعاتی مثل فایلهای قالب اختصاصی شما که بر روی هاست قرار دارند و یا فایلهایی که به صورت zip شده در هاست خود ذخیره کردهاید به راحتی با مرور هاست شما توسط سایرین کشف و به سرقت میره برای جلوگیری از این امر کد زیر رو در انهای فایل htaccess قرار بدین.
Options All -Indexes
3) معرفی زبان پیشفرض (DefaultCharset) :
برای اینکه زبان پیشفرض استفاده شده رو به مرورگرها بگین بیشتر وقتها اون رو در قسمت هدر کدهای سایت قرار میدین. با دستور کوتاه زیر به آپاچی میگیم که همیشه صفحات را با زبان خاصی ارسال کن. این عمل برای سئو تاثیری خوبی داره.
# pass the default character set
AddDefaultCharset utf-8
4) تعیین صفحات سفارشی برای صفحات خطا :
با دستور زیر میتوانید برگههایی رو که برای نمایش هنگام ایجاد خطا، طراحی و در پوشه 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: خطای داخلی سرور بوجود آمده است.
5) بن کردن اسپمرها با .htaccess (محدودیت دسترسی از طریق آی پی) :
چون دیدگاههای اسپم واقعا روی اعصاب هستند و مخصوصا اگر سایتتان پیشرفت داشته باشه این دیدگاهها به صورت وحشیانه هجوم میارند که ما کلا میخواهیم آی پی اونها رو مسدود کنیم.
<Limit GET POST>
order allow,deny
deny from 200.49.176.139
allow from all
</Limit>
دستور “allow from all” یعنی همه آیپیها بجز آیپیهای مسدود شده دسترسی دارند. اگه بخوایم فقط به آیپیهای خاصی اجازه دسترس بدیم کافیه به این کدی به این شکل وارد کنید “allow from 188.50.38.143” و به جای آی پی درج شده آی پی مورد نظر خودتون رو وارد کنید.
با دستور “deny from 200.49.176.139” هم اجازه دسترسی این آی پی رو میگیرم که میتونید به هر تعداد که خواستین از اون زیر هم اضافه کنید. با این کد هم دیگه هیچ آی پی اجازه ورود نخواهد داشت حتی خود شما “deny from all”.
نکته : بعضی مواقق قرار دادن “<Limit GET POST>” و “</Limit>” در ابتدا و انتهای تعیین دسترسیها مشکلاتی رو ایجاد میکنه که در این صورت اونها رو از ابتدا و انتهای کدها بردارین.
6) جلوگیری از ارسال دیدگاه اسپم در وردپرس :
افزونه اکیسمت افزونه شناخته شدهای در زمینه جلوگیری از ارسال اسپم هست که در بسته اصلی خود وردپرس هم وجود داره اما شما میتونید با استفاده از کد زیر از ارسال هرزنامه به وبسایتتان جلوگیری کنید دقت داشته باشید که در خط چهارم آدرس سایت خودتون رو وارد کنید.
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]
7) حذف category از آدرس سایت وردپرسی شما :
شاید شما هم دوست داشته باشید کلمه /category/ رو از آدرس سایت وردپرسی خودتون حذف کنید. این کار علاوه بر اینکه باعث جمع و جور شدن url شما میشه تاحدودی هم در سئو سایتتون موثر هست. البته با تغییر پیوند یکتای مربوط به category هم میشه که این کار رو افزونههای سئو برای شما انجام میدن و این کد رو محض یک راه حل بیرون از چهارچوب اصولی قرار دادم .
RewriteRule ^category/(.+)$ http://www.yourblog.com/$1 [R=301,L]
8) تغییر عنوان و پسوند فایل پیشفرض index در هنگام بارگذاری :
حتما تا حالا متوجه شدین که در هنگام فراخوانی یک آدرس پیشفرض یکی از فایل های index.html یا index.php یا… بارگزاری میشن. حال اگه دوست داشتین این سنت رو بشکنین می تونین از کد زیر استفاده کنید. با قرار دادن اون هنگام فراخوانی به دنبال file.php میگرده و اگه نبود به دنبال file.html خواهد بود.
DirectoryIndex file.php file.html
9) ورود به سایت با www یا بدون www :
اینکه سایت از هر دو روش امکان بارگزاری داشته باشه یعنی باید فاتحه سئو سایتتون رو بخونین چون در اینصورت روبوتهای گوگل فکر میکنن دو دامنه یک مطلب را منتشر میکنه و از ارزش هر دو کم میکنن، طبق تجربه برای سئو بهتره سایت بدون www باشه دلیلش هم کوتاه شدن دامنه هست ولی تا یادم نرفته بگم تا تو دردسر نیوفتین