فایل htaccess یک فایل پیکربندی متنی است که در وب سرورهایی نظیر آپاچی (Apache) ، LiteSpeed و Nginx استفاده میشود. این فایل به شما اجازه میدهد تا تنظیمات مختلفی را بدون اینکه نیاز به تغییر در کدهای اصلی سایت داشته باشید برای وب سایت خود انجام دهید. به عبارت دیگر، htaccess مانند یک تنظیم کننده کوچک برای وب سرور شما عمل میکند. محتوای فایل htaccess مانند کدهای زبان برنامه نویسی است و میتوانیم بگوییم، htaccess خود یک زبان برنامه نویسی اسکریپتی کوچک است که میتوان با آن بر روی عملکرد وبسرور بر اساس عملکرد کدهای وبسایت کنترل داشت.
وب سرور (web Server) چیست و چه کاربردی دارد؟
کاربردهای فایل htaccess
-
بازنویسی آدرسها (URL Rewriting): با استفاده از htaccess میتوانید آدرسهای وب سایت خود را به شکل دلخواه تغییر دهید. این کار باعث میشود آدرسهای وب سایت شما خواناتر و SEO-Friendly شوند.
-
ریدایرکت کردن: میتوانید کاربران را از یک آدرس به آدرس دیگری هدایت کنید. مثلاً وقتی آدرس یک صفحه را تغییر میدهید، میتوانید کاربران قدیمی را به آدرس جدید هدایت کنید.
-
محدود کردن دسترسی: میتوانید دسترسی به برخی از بخشهای وب سایت خود را محدود کنید. مثلاً میتوانید دسترسی به یک دایرکتوری خاص را فقط به کاربران دارای رمز عبور محدود کنید.
-
تنظیمات کش: میتوانید تنظیمات کش وب سرور را تغییر دهید تا سرعت بارگذاری وب سایت شما افزایش یابد.
-
محدود کردن دسترسی IP: میتوانید دسترسی به وب سایت خود را به برخی از آدرسهای IP محدود کنید.
-
نمایش صفحات خطا سفارشی: میتوانید صفحات خطای سفارشی برای خطاهای مختلف مانند 404 (صفحه یافت نشد) ایجاد کنید.
-
فشردهسازی فایلها: میتوانید فایلهای وب سایت خود را فشرده کنید تا حجم آنها کاهش یابد و سرعت بارگذاری وب سایت افزایش یابد.
-
تنظیمات امنیتی: میتوان با تنظیم وبسرور بر اساس عملکرد وبسایت، فایروایل را تنظیم کرد تا از حمله هکرها به وبسایت تا حد ممکن جلوگیری شود.
لیست کامل دستورات htaccess
بازنویسی آدرس و تغییر مسیر: Rewrite and Redirection
این لیست از دستورات مربوط به آدرسدهی وبسرور میشود. برای مثال آدرس فایلهای اسکریپت مانند PHP با پسوند .php تمام میشوند که این آدرس برای سئو در موتورهای جستجو، اصلاً آدرس بهینهای نیست. بنابراین بهتر است تا آدرس اصلی با یک آدرس بر اساس محتوای صفحه که به آن نامک یا پیوند یکتا گفته میشود، جایگزین شود.
مدیریت آدرسها و هدایت در htaccess
تمام درخواستهای ارسال شده به سرور را با یک فایل PHP ارائه دهید: تمامی درخواستهای ورودی را به یک فایل index.php مشخص هدایت میکند. این ویژگی معمولاً برای ساختن یک front-controller در فریمورکها استفاده میشود و با استفاده از دستورات RewriteRule و RewriteCond پیادهسازی میشود و به شما اجازه میدهد تا فایل index.php را به عنوان نقطه ورود اصلی برای تمام درخواستها تعیین کنید.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*)$ /index.php [NC,L,QSA]
دستورات تغییر مسیر مخصوص وردپرس: دستور زیر مخصوص وردپرس است و برای فعال کردن ساختارهای لینک ثابت (permalink) استفاده میشود. این ساختارها به جای IDهای عددی، از کلمات کلیدی در آدرسها استفاده میکنند که برای سئو بهتر است.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
تغییر مسیر یک صفحه: یک آدرس URL خاص را به یک مسیر جدید هدایت میکند.
Redirect 301 /oldpage.html https://www.yoursite.com/newpage.html
Redirect 301 /oldpage2.html https://www.yoursite.com/folder/
مشخص کردن نام مستعار برای یک دایرکتوری خاص: این دستور برای ایجاد یک آدرس جایگزین برای یک دایرکتوری خاص استفاده میشود. به عبارت دیگر، با استفاده از این دستور میتوانیم به یک دایرکتوری از طریق آدرس دیگری دسترسی پیدا کنیم. چیزی شبیه به میانبرها در سیستمعامل ویندوز.
RewriteEngine On
RewriteRule ^source-directory/(.*) target-directory/$1
اختصاص دادن مسیرهای مختلف به یک اسکریپت خاص: این دستور برای هدایت چندین مسیر مختلف به یک اسکریپت واحد استفاده میشود. این کار معمولاً برای ساختن URLهای تمیز و سئوپسند انجام میشود.
RewriteEngine On
RewriteRule ^$ index.fcgi/ [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L]
تغییر مسیر کل یک وبسایت : این دستور برای هدایت کامل یک سایت به آدرس دیگری استفاده میشود. این کار معمولاً در مواردی مانند تغییر دامنه، انتقال سایت به سرور جدید یا ادغام دو سایت انجام میشود.
Redirect 301 / https://newsite.com/
-
Redirect 301: یک هدایت دائمی (301) تعریف میکند.
-
/ علامت اسلش: نشان میدهد که تمام درخواستها به آدرس جدید هدایت شوند.
-
http://newdomain.com/: آدرس جدید سایت.
ساده سازی آدرسهای URL: این دستور به شما اجازه میدهد تا آدرسهای پیچیده و حاوی پارامترهای GET را به آدرسهای سادهتر و خواناتر تبدیل کنید. مثلاً آدرس [نشانی وب نامعتبر برداشته شد] را به [نشانی وب نامعتبر برداشته شد] تبدیل میکند. برای مثال : example.com/users ساده شده example.com/users.php
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^.]+)$ $1.php [NC,L]
مدیریت پروتکل و دامنه در htaccess
اجبار در استفاده از عبارت www در ابتدای دامنه: تمامی درخواستها را به نسخه www دار دامنه هدایت میکند.
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
اجبار در عدم استفاده از عبارت www در ابتدای دامنه: تمامی درخواستها را به نسخه بدون www دار دامنه هدایت میکند.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.
RewriteCond %{HTTPS}s ^on(s)|off
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$
RewriteRule ^ %1%3%{REQUEST_URI} [R=301,L]
دستور زیر روشی عمومیتر برای اجبار عدم استفاده از www است.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.
RewriteCond %{HTTPS}s ^on(s)|off
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$
RewriteRule ^ %1%3%{REQUEST_URI} [R=301,L]
تمامی درخواستها را به نسخه HTTPS سایت هدایت میکند.
RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
دستور زیر، باعث میشود تا در محیطهایی که از پروکسی استفاده میشود، تمامی درخواستها به HTTPS هدایت شوند.
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
مدیریت ساختار URL در htaccess
در انتهای تمام آدرسها یک / اسلش اضافه میکند.
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
/ اسلش اضافی در انتهای آدرسها را حذف میکند.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]
دستورات امنیتی در htaccess
دستورات امنیتی کمک میکنند تا جلوی دسترسی افراد به بخشهای حیاتی وبسایت گرفته شود. برای مثال بصورت پیشفرض وبسرور محتوای دایرکتوریها را نمایش میدهد که ممکن است حاوی کدهای وبسایت باشند. اما با پیکربندی درست در htaccess جلوی نمایش لیست فایلها گرفته میشود. لیست فایلها میتوانند سرنخ خوبی برای هکرها باشند تا بر اساس آنها عملکرد کدهای وبسایت را کشف کنند. مخصوصاً اگر نامگذاری فایلها بطور واضح به بخشهای اساس وبسایت اشاره کند.
مصدود کردن همه دسترسیها: این دستور دسترسی به لیست فایلهای و دایرکتوریها را مصدود میکند.
Deny from all
# Require all denied
مصدود کردن دسترسی همه آدرسهای IP: با دستور زیر میتوانید فقط IP های خاص را مجاز کنید.
Apache 2.2
Order deny,allow
Deny from all
Allow from xxx.xxx.xxx.xxx
Apache 2.4
# Require all denied
# Require ip xxx.xxx.xxx.xxx
دستور زیر آدرس IP خاصی را مصدود میکند.
Apache 2.2
Order deny,allow
Allow from all
Deny from xxx.xxx.xxx.xxx
Deny from xxx.xxx.xxx.xxy
اجازه دسترسی فقط از LAN: با دستور زیر، فقط شبکههای محلی قادر به دسترسی به وبسرور و وبسایت خواهند بود.
order deny,allow
deny from all
allow from 192.168.0.0/24
با دستور زیر میتوانید رباتهای خزنده جاسوس و مخرب را مصدود کنید.
RewriteCond %{HTTP_USER_AGENT} ^User\ Agent\ 1 [OR]
RewriteCond %{HTTP_USER_AGENT} ^Another\ Bot\ You\ Want\ To\ Block [OR]
RewriteCond %{HTTP_USER_AGENT} ^Another\ UA
RewriteRule ^.* - [F,L]
دستور زیر دسترسی به فایلها و فهرستهای مخفی را مصدود میکند.
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)\." - [F]
دسترسی به فایل های خاص را مصدود میکند.
<files your-file-name.txt>
order allow,deny
deny from all
</files>
دسترسی به فایل های پشتیبان و منبع را ممنوع کنید.
Apache 2.4
<FilesMatch "(\.(bak|config|dist|fla|inc|ini|log|psd|sh|sql|swp)|~)$">
Order allow,deny
Deny from all
Satisfy All
Apache 2.2
# Require all denied
</FilesMatch>
غیرفعال کردن نمایش لیست فایلهای درون دایرکتوری: این دستور از نمایش فهرست محتویات یک دایرکتوری به صورت خودکار جلوگیری میکند. اگر کاربری آدرس یک دایرکتوری را بدون مشخص کردن یک فایل خاص وارد کند، به جای نمایش لیستی از فایلها، یک صفحه خطا یا یک صفحه سفارشی نمایش داده میشود. این کار به دلایل امنیتی و زیباییشناسی انجام میشود.
Options All -Indexes
کردن نمایش لیست فایلهای درون دایرکتوری: بر خلاف دستور قبلی، این دستور به سرور اجازه میدهد تا فهرست محتویات یک دایرکتوری را نمایش دهد. این میتواند برای ایجاد یک گالری تصاویر یا یک فهرست ساده از فایلها مفید باشد.
Options All +Indexes
غیرفعال کردن لیست انواع فایل های خاص (اگر Indexes غیرفعال نیست): اگر نمایش فهرست محتویات دایرکتوری فعال باشد، این دستور به شما اجازه میدهد تا برخی از انواع فایلها را از لیست نمایش حذف کنید. به عنوان مثال، میتوانید فایلهای پشتیبان یا فایلهای پیکربندی را از لیست پنهان کنید.
IndexIgnore *.zip *.mp4 *.pdf
Hotlinking تصویر را غیرفعال کنید: این دستور از استفاده غیرمجاز از تصاویر شما در سایتهای دیگر جلوگیری میکند. به عبارت دیگر، اگر کسی آدرس مستقیم یک تصویر شما را در سایت خود قرار دهد، به جای نمایش تصویر، یک صفحه خالی یا یک تصویر جایگزین نمایش داده میشود.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
Hotlinkers را تغییر مسیر دهید و تصویر متفاوتی را نشان دهید: این دستور مشابه دستور قبلی است، با این تفاوت که به جای نمایش یک صفحه خالی، یک تصویر متفاوت (مثلاً یک تصویر با لوگوی سایت شما) نمایش داده میشود. این کار میتواند به عنوان یک روش برای تبلیغ سایت شما استفاده شود.
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?your-website.com/.*$ [NC]
RewriteRule \.(gif|jpg|png)$ https://www.your-website.com/do-not-hotlink-our-content.jpg [R,L]
مصدود کردن دسترسی از ارجاع دهنده های خاص: این دستور به شما اجازه میدهد تا دسترسی به سایت خود را از برخی منابع خاص (مانند سایتهای دیگر) محدود کنید. این کار معمولاً برای جلوگیری از اسپم و حملات هکری مانند DDoS استفاده میشود.
RewriteCond %{HTTP_REFERER} block-this-referer\.com [NC,OR]
RewriteCond %{HTTP_REFERER} and-block-traffic-that-this-site-sends\.com [NC]
RewriteRule .* - [F]
محافظت از یک دایرکتوری خاص با رمز عبور: این دستور برای محافظت از یک دایرکتوری با رمز عبور استفاده میشود. هر کسی که بخواهد به محتویات این دایرکتوری دسترسی پیدا کند، باید نام کاربری و رمز عبور صحیح را وارد کند.
htpasswd -c /home/hidden/directory/here/.htpasswd the_username
محافظت از یک یا چند فایل خاص با رمز عبور: این دستور مشابه دستور قبلی است، با این تفاوت که به جای یک دایرکتوری، یک فایل یا چندین فایل را محافظت میکند.
AuthName "Password Protected Directory Title"
AuthType Basic
AuthUserFile /home/hidden/directory/here/.htpasswd
<Files "/a-private-file.txt">
Require valid-user
</Files>
<FilesMatch ^((one|two|three)-rings?\.o)gt;
Require valid-user
</FilesMatch>
بهینه سازی در htaccess
این دستورات کارایی سرور را افزایش میدهند که در نتیجه عملکرد کلی وبسایت را نیز بهتر میکند.
فشرده سازی فایلهای متنی قبل از (gzip/deflate output): این دستور باعث میشود که فایلهای متنی (مانند HTML، CSS، JavaScript) قبل از ارسال به مرورگر کاربر فشرده شوند. این کار حجم فایلها را کاهش داده و سرعت بارگذاری صفحات را افزایش میدهد. الگوریتمهای فشردهسازی مانند gzip و deflate معمولاً برای این منظور استفاده میشوند.
<IfModule mod_deflate.c>
# Force compression for mangled headers.
# https://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>
# Compress all output labeled with one of the following MIME-types
# (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
# and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines
# as `AddOutputFilterByType` is still in the core directives).
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE application/atom+xml \
application/javascript \
application/json \
application/rss+xml \
application/vnd.ms-fontobject \
application/x-font-ttf \
application/x-web-app-manifest+json \
application/xhtml+xml \
application/xml \
font/opentype \
image/svg+xml \
image/x-icon \
text/css \
text/html \
text/plain \
text/x-component \
text/xml
</IfModule></IfModule>
تنظیم انقضای سربرگها: این دستور یک هدر HTTP به نام Expires اضافه میکند که به مرورگر میگوید تا چه زمانی میتواند از نسخه کش شده یک فایل استفاده کند. این کار باعث کاهش بارگذاری مجدد فایلها میشود و سرعت سایت را افزایش میدهد.
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 year"
# Data interchange
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Favicon (cannot be renamed!)
ExpiresByType image/x-icon "access plus 1 week"
# HTML components (HTCs)
ExpiresByType text/x-component "access plus 1 month"
# HTML
ExpiresByType text/html "access plus 0 seconds"
# JavaScript
ExpiresByType application/javascript "access plus 1 year"
# Manifest files
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Media
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# Web feeds
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
# Web fonts
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>
خاموش کردن eTags: قابلیت eTags یک شناسه منحصر به فرد برای یک نسخه خاص از یک فایل است. این دستور از ایجاد eTag ها جلوگیری میکند. در برخی موارد، غیرفعال کردن eTags میتواند به بهبود عملکرد کش کمک کند، اما در برخی موارد دیگر میتواند باعث مشکلات شود.
<IfModule mod_headers.c>
Header unset ETag
</IfModule>
FileETag None
تنظیم محدودیت اندازه آپلود فایل: این دستور حداکثر اندازه فایلی که کاربر میتواند آپلود کند را محدود میکند. این کار از پر شدن فضای دیسک و حملات DDoS جلوگیری میکند.
LimitRequestBody 1048576
Miscellaneous : مدیریت رفتار سرور و تنظیمات PHP
این لیست از دستورات بیشتر مربوط به دستورات عمومی و کلیتر وبسرور است و به کمک آن میتوان پیکربندی وبسرور را تظیم کرد و عملکرد آن را بهبود بخشید.
متغیرهای سرور برای mod_rewrite: این دستور به شما اجازه میدهد تا متغیرهای سرور را برای استفاده در قوانین بازنویسی (RewriteRule) تعریف کنید. این متغیرها میتوانند حاوی اطلاعاتی مانند نام دامنه، مسیر درخواست، پروتکل و غیره باشند.
%{API_VERSION}
%{DOCUMENT_ROOT}
%{HTTP_ACCEPT}
%{HTTP_COOKIE}
%{HTTP_FORWARDED}
%{HTTP_HOST}
%{HTTP_PROXY_CONNECTION}
%{HTTP_REFERER}
%{HTTP_USER_AGENT}
%{HTTPS}
%{IS_SUBREQ}
%{REQUEST_FILENAME}
%{REQUEST_URI}
%{SERVER_ADDR}
%{SERVER_ADMIN}
%{SERVER_NAME}
%{SERVER_PORT}
%{SERVER_PROTOCOL}
%{SERVER_SOFTWARE}
%{THE_REQUEST}
متغیرهای PHP را تنظیم کنید: این دستور برای تنظیم مقادیر متغیرهای پیکربندی PHP در فایل .htaccess استفاده میشود. با استفاده از این دستور میتوانید مقادیر متغیرهایی مانند display_errors، max_execution_time و ... را تغییر دهید.
php_value <key> <val>
برای مثال:
php_value upload_max_filesize 50M
php_value max_execution_time 240
صفحات خطای سفارشی: این دستور برای نمایش صفحات خطای سفارشی به جای صفحات پیشفرض سرور استفاده میشود. به عنوان مثال، میتوانید یک صفحه 404 سفارشی ایجاد کنید که به کاربر کمک کند تا صفحه مورد نظر خود را پیدا کند.
ErrorDocument 500 "Houston, we have a problem."
ErrorDocument 401 https://error.yourdomain.com/mordor.html
ErrorDocument 404 /errors/halflife3.html
نمایش صفحه تعمیر و نگهداری، حین به روز رسانی: این دستور برای هدایت کاربران به یک صفحه تعمیر و نگهداری در طول انجام کارهای تعمیر و نگهداری بر روی سایت استفاده میشود. به این ترتیب، کاربران متوجه میشوند که سایت در دست تعمیر است و میتوانند بعداً دوباره مراجعه کنند.
ErrorDocument 403 YourMaintenancePageFilenameOrFullUrlUrl.html
Order deny,allow
Deny from all
Allow from 555.555.555.555
دانلود اجباری: این دستور باعث میشود که مرورگر فایلها را به جای نمایش آنها در مرورگر، دانلود کند. این کار معمولاً برای فایلهایی مانند PDF، DOCX، ZIP و ... استفاده میشود.
<Files *.md>
ForceType application/octet-stream
Header set Content-Disposition attachment
</Files>
غیرفعال کردن نمایش اطلاعات سرور (امضای سرور): این دستور از نمایش اطلاعات نسخه سرور در هدرهای HTTP جلوگیری میکند. این کار میتواند به افزایش امنیت سایت کمک کند، زیرا مهاجمان میتوانند از این اطلاعات برای شناسایی نقاط ضعف سرور استفاده کنند.
ServerSignature Off
جلوگیری از دانلود مستقیم: این دستور از دانلود مستقیم برخی از فایلها جلوگیری میکند. این کار معمولاً برای محافظت از فایلهای مهم مانند فایلهای پیکربندی یا پایگاه داده استفاده میشود.
<FilesMatch "\.(tex|log|aux)$">
Header set Content-Type text/plain
</FilesMatch>
استفاده از فونت های متقابل دامنه: این دستور به شما اجازه میدهد تا از فونتهای موجود در یک دامنه دیگر در سایت خود استفاده کنید. این کار معمولاً برای استفاده از سرویسهای فونتهای وب مانند Google Fonts استفاده میشود.
<IfModule mod_headers.c>
<FilesMatch "\.(eot|otf|ttc|ttf|woff|woff2)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
رمزگذاری خودکار UTF-8 : این دستور باعث میشود که تمام محتوا به صورت خودکار به UTF-8 کدگذاری شود. این کار برای پشتیبانی از زبانهای مختلف و نمایش صحیح کاراکترها ضروری است.
# Use UTF-8 encoding for anything served text/plain or text/html
AddDefaultCharset utf-8
# Force UTF-8 for a number of file formats
AddCharset utf-8 .atom .css .js .json .rss .vtt .xml
تنظیم منطقه زمانی سرور (روی UTC یا منطقه زمانی دیگر): این دستور برای تنظیم منطقه زمانی سرور استفاده میشود. این تنظیمات بر روی تاریخ و زمان نمایش داده شده در سایت تأثیر میگذارد.
SetEnv TZ UTC
برای مثال:
SetEnv TZ America/Los_Angeles
تغییر نسخه PHP: اگر سرور شما چندین نسخه PHP را پشتیبانی میکند، میتوانید با استفاده از این دستور نسخه مورد نظر خود را برای یک دایرکتوری خاص انتخاب کنید. اگر از یک هاست اشتراکی استفاده می کنید، به احتمال زیاد بیش از یک نسخه از PHP نصب شده است، و گاهی اوقات شما یک نسخه خاص برای وب سایت خود نیازدارید. به عنوان مثال، فریمورک لاراول به PHP نسخه 5.4 به بالا نیاز دارد. با قطعه کد زیر میتوانید نسخه PHP را تغییر دهید. در این کد عدد 55 به ورژن 5.5 اشاره دارد و شما میتوانید این عدد را به نسبت نیاز پروژه خود و با توجه به نسخههای نصب شده بر روی سرور تغییر دهید.
AddHandler application/x-httpd-php55 .php
همچنین می توانید از عبارت AddType استفاده کنید
AddType application/x-httpd-php55 .php
غیرفعال کردن مرورگر Internet Explorer: با اینکه امروزه دیگر کسی از مرورگرهای قدیمی مانند Internet Explorer استفاده نمیکند، اما میتوان برای اطمینان از اینکه کاربران با مرورگرهای بروز وبسایت رو مرور میکنند، استفاده از مرورگر Internet Explorer را مصدود کرد و کاربر را به استفاده از مرورگرهای بروز مانند Edge توصیه کرد. برای این منظور از کد زیر استفاده کنید :
<IfModule mod_headers.c>
BrowserMatch MSIE is-msie
Header set X-UA-Compatible IE=edge env=is-msie
</IfModule>
PHP را با پسوند فایل متفاوت اجرا کنید: این دستور به شما اجازه میدهد تا فایلهایی با پسوند متفاوت را به عنوان فایلهای PHP اجرا کنید. به عنوان مثال، میتوانید فایلهایی با پسوند .html را به عنوان فایلهای PHP اجرا کنید. برای مثال در کد زیر فایلهایی که به پسوند ext ختم میشوند با PHP اجرا میشوند :
AddType application/x-httpd-php .ext
اگر اکستنشن WebP را نصب کرده باشید، میتوانید با افزودن کد زیر، تصاویری که با فرمت JPG و PNG آپلود شدهاند برای کاربر در لحظه با فرمت .webp فشرده میشوند و سپس به مرورگر کاربر ارسال میشوند. این کار باعث کاهش ترافیک سایت و بالا رفتن سرعت کلی آن میشود.
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule (.+)\.(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1]
سخن پایانی
فایل htaccess فایل بسیار مهمی است که بدون آن نمیتوان وبسایت را بهینه سازی کرد. همچنین استفاده از این فایل، وبسرور را پویا میکند و میتوان پیکربندی وبسرور را بصورت پویا و بر اساس عملکرد وبسایت با دستورات شرطی، بصورت تغییر داد. بنابراین اگر وبمستر هستید و یا برنامه نویس بکاند باشید، آشنایی با دستورات htaccess برای شما بسیار مهم و حیاتی است.