فایل .htaccess چیست و چه کاربردی دارد

  • Super User

فایل .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 باشه دلیلش هم کوتاه شدن دامنه هست ولی تا یادم نرفته بگم تا تو دردسر نیوفتین 😀 ، اگه تا حالا سایتتون با www بود و ایندکس‌هایی که تو گوگل دارین به این صورت ذخیره شدن از فکر عوض کردنش در بیاین چون نتیجه‌ای جز از دست دادن تمام ایندکس هایی که داشتین براتون نداره جز در مواردی که برای ایجاد این تغییرات ریدایرکت 301 در نظر گرفته بشه.

اگه میخواین بفهمین سایتون به چه صورت تو گوگل ثبت شده بهتره در جستجوی گوگل این متن رو وارد کنید (به‌جای 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]
10) بالا بردن امنیت فایل wp-config.php در htaccess :

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

<files wp-config.php>
order allow,deny
deny from all
</files>
11) مخفی کردن فرمت ها/شناساندن فرمت‌های جدید (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
12) ریدایرکت/Redirect کردن :

اونقده مردم اومدن با جاوا اسکریپت و امثال اون آدرس‌ها رو به آدرس‌های دیگه‌ای ریدایرکت کردن آخر سر این کد به جاش به وجود اومد 😀

Redirect /Dirold/old.html http://site.com/DirNew/new.html
13) محدود کردن نوع فایلهای قابل اجرا و نمایش :

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

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

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

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

php_value upload_max_filesize 20M
15) ایجاد محدودیت در حجم پست ارسالی :

با کد زیر میشه حداکثر حجم هر پست رو 2 مگابایت تعیین کرد.

php_value post_max_size 2M
16) نمایش پیغام requast time در بازه زمانی مشخص :

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

php_value max_execution_time 200
17) حداکثر زمان دریافت اطلاعات POST و GET :

php_value max_input_time 250
18) جلوگیری از سرقت پهنای باند، فایل‌ها و عکس‌ها :

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

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?site.com/ .*$ [NC]
RewriteRule \.(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]
19) فعال کردن قابلیت 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
20) مدیریت Cache فایلها :

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

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

# 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
21) حل مشکل تعداد آیتم های فهرست وردپرس :

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

<IfModule mod_php.c>
php_value suhosin.post.max_vars 7000
php_value suhosin.request.max_vars 7000
</IfModule>
22) افزایش امنیت محتوای فولدر 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 که برای جوملا بهینه شده قرار میدهیم

##### Security Enhanced & Highly Optimized .htaccess File for Joomla! Powerd By Golchinonline
# @package    Joomla
# @copyright  Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved.
# @license    GNU General Public License version 2 or later; see LICENSE.txt
##
### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
### !!                                                                       !!
### !!  If you get an Internal Server Error 500 or a blank page when trying  !!
### !!  to access your site, remove this file and try tweaking its settings  !!
### !!  in the back-end of the Admin Tools component.                        !!
### !!                                                                       !!
### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
##
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations.  It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that disallows changing it in
# your .htaccess file.  If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's.  If they work,
# it has been set by your server administrator and you do not need it set here.
##

## No directory listings
IndexIgnore *

## Can be commented out if causes errors, see notes above.
Options +FollowSymlinks
Options -Indexes

## Mod_rewrite in use.

RewriteEngine On

## Begin - Rewrite rules to block out some common exploits.
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.

## Begin - Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End - Custom redirects

##
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##

# RewriteBase /

## Begin - Joomla! core SEF Section.
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
## End - Joomla! core SEF Section.
Header unset ETag
FileETag None

## Send ETag (selected method: )
##### Rewrite rules to block out some common exploits -- BEGIN
RewriteCond %{QUERY_STRING} proc/self/environ [OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
RewriteCond %{QUERY_STRING} base64_(en|de)code\(.*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule .* index.php [F]
##### Rewrite rules to block out some common exploits -- END
##### Advanced server protection rules exceptions -- BEGIN
##### Advanced server protection rules exceptions -- END

##### Advanced server protection -- BEGIN


## EXPIRES CACHING ##
<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault "access plus 1 month"

  # Other
    ExpiresByType text/css "access 1 month"
    ExpiresByType application/pdf "access 1 month"
    ExpiresByType text/x-javascript "access 1 month"
    ExpiresByType application/x-shockwave-flash "access 1 month"
    ExpiresByType application/javascript "access plus 1 year"


  # Data interchange
    ExpiresByType application/json "access plus 1 week”
    ExpiresByType application/xml "access plus 1 week”
    ExpiresByType text/xml "access plus 1 week”

  # Favicon (cannot be renamed!)
    ExpiresByType image/x-icon "access plus 1 year”

  # HTML components (HTCs)
    ExpiresByType text/x-component "access plus 1 month"

  # HTML
    ExpiresByType text/html "access plus 0 seconds"

   
  # Manifest files
    ExpiresByType application/x-web-app-manifest+json "access plus 1 week”
    ExpiresByType text/cache-manifest "access plus 1 week”

  # Media
    ExpiresByType audio/ogg "access plus 1 year”
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType video/mp4 "access plus 1 year"
    ExpiresByType video/ogg "access plus 1 year”
    ExpiresByType video/webm "access plus 1 year”

  # Web feeds
    ExpiresByType application/atom+xml "access plus 1 day”
    ExpiresByType application/rss+xml "access plus 1 day”

  # Web fonts
    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"
    
    
  # CSS and JavaScript
  ExpiresByType text/css "access plus 1 year"
  ExpiresByType text/javascript "access plus 1 year"
  ExpiresByType application/javascript "access plus 1 year"


</IfModule>
## EXPIRES CACHING ##

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

#disable hotlinking of images with forbidden or custom image option
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.yoursite\.com
RewriteRule (.*) http://yoursite.com/$1 [R=301,L]

<ifModule mod_headers.c>
    Header set Connection keep-alive
</ifModule>

اگر روش یا راه حل بهتری برای بهینه سازی فایل htaccess با ما در میان بگذارید

مقالات سئو, آموزش سئو حرفه ای, بهینه سازی سایت, افزایش سرعت سایت , بهینه سازیhtaccess, دانلود فایل htaccess, فایل htaccess کجاست, آموزش ساخت فایل htaccess

  • Hits: 65
عدم نمایش دیدگاه از

1000 کاراکتر باقیمانده است