atVSG

0011001000110100

وحید امیری مطلق

توسعه دهنده وب و موبایل

ترفند های کاربردی Apache با استفاده از فایل htaccess


htaccess

فایل htaccess (که با یک نقطه شروع میشه) یک فایل تنظیمات مخصوص وب سرور آپاچی است که البته توسط برخی وب سرور های دیگر هم تا حدودی پشتیبانی میشه. مزیت اصلی استفاده از این فایل به جای تغییر تنظیمات Apache در سطح پایین تر، پرتابل بودن اون و امکان استفاده از آن در محیط هایی که دسترسی به نرم افزار های سیستمی از جمله وب سرور برای کاربران محدود شده، مثل هاست های اشتراکی است. در این پست چند ترفند کاربردی رو برای بهبود سئو و سرعت سایت هایی که قابلیت استفاده از htaccess رو دارند، بررسی میکنیم.

هشدار: قبل از انجام هر تغییری، از فایل htaccess سایت خودتون (در صورت وجود) نسخه پشتیبان تهیه کنید. این فایل ممکنه در حالت مخفی باشه و به صورت پیشفرض قابل مشاهده نباشه (مثل cPanel) که در اون صورت باید با توجه به راهنمای کنترل پنل هاست خودتون یا سرورتون مشاهده فایل های مخفی رو فعال کنید.

 

فعال کردن gzip برای فشرده سازی صفحات وب

توجه: این قابلیت در اکثر هاست های اشتراکی به طور پیش فرض فعال است. (برای بررسی این که آیا در هاست شما فعال هست یا نه میتونید header های برگشتی (response) رو چک کنید یا از یک سرویس آنلاین مثل این استفاده کنید)

این کار میتونه حجم صفحات شما رو تا 80% کاهش بده و به این صورت هم زمان بارگذاری صفحات کاهش پیدا میکنه هم پهنای باید کمتری مصرف میشه. برای فعال کردنش 2 روش وجود داره که ما اینجا از روش ساده تری استفاده میکنیم که هم استاندارد هست هم روش پیشنهادی برای Apache 2 است.

 

کد زیر را در فایل htaccess. وارد کنید: (خارج از هر بلوک کد دیگری)

AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript

منتقل کردن ترافیک www به غیر www

یعنی چی؟ یعنی اینکه چه کاربر آدرس سایت شما (دامنه شما) رو با www شروع کنه چه صرفا نام دامنه رو وارد کنه، کاربر به دامنه ی شما بدون www اول اون منتقل میشه. توجه داشته باشید که www خودش یک زیردامنه محسوب میشه! اما کاملا بیهوده و بی کاربرده. چرا باید اینکار رو کرد؟

  • www عملا هیچ کاربردی نداره (خب، دقیقا “هیچ” نیست ولی اونطوری هم نیست که بهش بگیم “کاربردی”)
  • www صرفا کاربر رو مجبور میکنه به اینکه 4 کاراکتر اضافه (www + نقطه) رو بنویسه
  • عدم نمایش www در مرورگر، باعث میشه کاربر راحت تر روی آدرس سایت شما تمرکز کنه و فضای بیشتری برای URL باقی میزاره

برای منتقل کردن ترافیک www به دامین اصلی کافیه کد زیر رو در htaccess اضافه کنید: (هم ترافیک HTTP و هم HTTPS رو منتقل میکنه)

RewriteEngine On

# Redirect www to non-www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]

توجه: این کد فقط میتونه ترافیک دامین اصلی رو منتقل کنه نه ساب دامین ها رو. یعنی اگه دامین شما example.com هست و میخواید www.example.com به example.com منتقل بشه، باید از کد بالا استفاده کنید ولی اگر زیر دامنه ای مثل sub.example.com دارید که میخواید ترافیک www.sub.example.com به sub.example.com منتقل بشه، باید از کد زیر استفاده کنید و به جای example اسم دامنه خودتون رو وارد کنید:

RewriteEngine On

# Redirect www subdomain to non-www
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.example\.com)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [R=301,L]

توجه: در صورتی که هر کد rewrite دیگه ای هم دارید، میتونید در بلوک ifModule mod_rewirte.c وارد کنید، نمونه این کد ها مثل فایل htaccess وردپرس.

برطرف کردن مشکل IP Canonicalization

توجه: این ترفند فقط برای سایت هایی کاربرد داره که IP اختصاصی دارند و از اونجایی که اکثر هاست های اشتراکی IP اختصاصی ندارند، برای اون ها کاربردی نداره و لزومی به انجامش نیست.

این اصطلاح که تلفظش هم مشکله، مربوط به موقعی میشه که سایت شما همزمان از طریق IP سرور هم قابل دسترسیه. این باعث میشه که یک صفحه خیلی مشابه (شاید 100%) دیده بشه در حالی که URL اون صفحه دقیقا با URL ای که حاصل استفاده از دامین سایته، یکی نیست. این میتونه تاثیر منفی زیادی روی رتبه SEO ی سایت بزاره. تقریبا در همون حدی که داشتن www و غیر www به صورت همزمان و بدون redirect میتونه بزاره. برای برطرف کردنش کافیه IP رو به آدرس اصلی سایت redirect کنید. کد زیر رو به فایل htaccess اضافه کنید و به جای example.com دامین خودتون و همچنین به جای IP وارد شده، IP خودتون رو وارد کنید:

RewriteCond %{HTTP_HOST} ^79\.175\.125\.155
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

غیر فعال کردن Directory Listing (غیر فعال کردن نمایش محتوای فولدر ها)

به طور پیش فرض اگه URL وارد شده، مرتبط با اسم یک فولدر (پوشه) در سرور باشه، محتوای اون پوشه به کاربر نمایش داده میشه، این کار میتونه باعث مشکلات امنیتی بشه و بهتره که غیر فعالش کنیم. کافیه کد زیر رو در htaccess اضافه کنید:

Options -Indexes

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

ممکنه یک فایلی رو داشته باشید که برای اجرای صحیح برنامه نیازه ولی نباید کاربران خارج از سرور (localhost) به اون فایل دسترسی داشته باشن، میتونید با دستور زیر این کار رو انجام بدید: (به جای user.ini نام فایل خودتون رو قرار بدید)

<Files "user.ini">
Order Allow,Deny
Deny from all
Allow from localhost
Allow from 127.0.0.1

کد بالا صرفا به درخواست هایی رو که ازطرف localhost و 127.0.0.1 (هر دو درواقع معمولا یکی هستن) باشند، اجازه دسترسی میده. اگه میخواید به جای فایل، حق دسترسی به فولدر رو محدود کنید از این راهنما استفاده کنید.

اضافه کردن Header اضافی در پاسخ وب سرور

این مساله ممکنه خیلی کاربردی نباشه ولی بعضی مواقع برای شناسایی (تشخیص) یا امنیت یا شاید هم همینطوری(!) بخواید یک یا چند مقدار خاص رو در response وب سرور به کاربر قرار بدید. به جای NAME اسم هدر و به جای VALUE، مقدار مورد نظر رو قرار بدید و این خط کد رو به فایل htaccess اضافه کنید:

Header add NAME "VALUE"

 دیدگاه ها:
سوال یا دیدگاه؟

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