htaccess

۱۷ دستور مهم htaccess

htaccess مخفف کلمه هایپرتکست اکسز ( Hypertext Access = htaccess ) می باشد ، یک فایل مهم برای مدیران وب سایت ها محسوب می شود، چراکه به کمک این فایل ساده می توانند تنظیمات کاربردی وب سایت خود را بر روی وب سرور مورد استفاده اعمال نمایند.برای مثال به کمک اچ تی اکسسز می توان بسادگی آدرس دهی ( URL ) بخش های مختلف وب سایت را به صورت کاربر پسند ( user friendly ) و مناسب برای موتور های جستجو ( SEO ) اصلاح نمود و یا برای امنیت بیشتر، لایه امنیتی و کلمه عبور را برای ورود به یک پوشه در نظر گرفت و یا عملیات ریدایرکت را به کمک آن صورت داد.  

پرداخت تلگرام

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

کنترل ریدایرکت
کنترل دسترسی فیزیکی به فایلها و پوشه ها
کنترل نمایش خطاهای Apache
تنظیمات URL Rewrite
مسدود کردن یک یا چند IP خاص یا یک رنج IP
گذاشت پسورد بر روی پوشه ای خاص
تنظیمات کش و Expire Date آن
اعمال برخی تغییرات در تنظیمات پیش فرض PHP، MySQL و Apache
جلوگیری از نمایش تمامی فایلها یا یک یا چند فایل با پسوندی خاص
اضافه نمودن یک MIME
معرفی یک Default Document در پوشه ای خاص
تنظیم Default Charset

تنظیماتی که در فایل .htaccess قرار داده می شود بر روی پوشه جاری و زیر پوشه های آن اعمال می گردد و با قرار دادن یک فایل .htaccess دیگر در زیر پوشه ای خاص تنظیمات پوشه والد را نقض نمود.
بدیهی است که Microsoft هم برای اعمال تنظیمات بر روی IIS چنین امکانی را فراهم کرده باشد. شما می توانید مشابه همین تنظیمات را در فایل web.config پیاده سای کنید. تقریبا تمامی کد هایی که در فایل .htaccess استفاده می شوند را می توان در فایل web.config شبیه سازی کرد.
Microsoft در IIS خود امکانی برای ترجمه مستقیم کد های .htaccess به ساختار XML قابل قبول در Web.config تهیه نموده تا پشتیبانی از سایتهای ایجاد شده توسط PHP را کامل کند.

کارکرد وب سرور آپاچه به واسطه رول  ( Rule ) هایی است که در تنظیمات ( httpd.conf ) آن قرار دارد. این تنظیمات در حالت کلی توسط شرکت های هاستینگ و یا مدیر سرور پیکره بندی می شوند. ولی ممکن است هر کاربر به مقتضای طراحی اسکریپت خود نیاز به اعمال تغییراتی در کارکرد وب سرور داشته باشد که به دلایل مختلف امکان اعمال آنها بر بستر اشتراکی سرور هاست نباشد.
اینجاست که فایل htaccess. وارد میدان می شود. محتوای این فایل از جنس رول های وب سرور آپاچه است. هنگامی که وب سرور آپاچه قصد بارگزاری محتوای یک سایت یا یکی از پوشه های داخلی آن را داشته باشد ، در صورتی که در این مسیر به فایل htaccess. برخورد کند ، محتوای آن را بر تنظیمات پیشفرض خود مقدم دانسته و بر اساس آن اقدام به نمایش محتوا می کند.
طیفی از شخصی سازی هایی شامل عدم دسترسی به یک مسیر خاص ، محدودیت بر روی آی پی برخی کشور ها ، انواع ریدایرکت ها ، تغییرات در مکانیزم کش محتوا و موارد دیگری از این دست همگی به کمک htaccess. پوشش داده می شود.
البته باید در نظر داشت با توجه به اینکه کل فایل htaccess. در هر درخواست مرورگر یکبار بررسی می شود ، لذا زیاد بودن حجم رول های آن منجر به بروز کندی در نمایش سایت خواهد شد.
در ادامه شما را با چند مثال پر کاربرد در این خصوص آشنا می کنیم:
در نظر داشته باشید در مثال های زیر بایستی بجای example.com نام دامنه خود را وارد فرمایید.

ریدایرکت کردن سایت بدون www به وضعیت با www :

RewriteEngine On
RewriteCond %{HTTP_HOST} ^ example.com [NC]
RewriteRule ^(.*)$ http://www. example.com /$1 [L,R=301]

ریدایرکت کردن سایت از حالت با www به حالت بدون www :

RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

مسدود کردن دسترسی یک آی پی به سایت :

order allow,deny
deny from 1.2.3.4
allow from all

مسدود کردن دسترسی همه بجز یک آی پی به سایت:

order allow,deny
allow from 1.2.3.4
deny from all

ریدایرکت سایت بر روی یک نشانی دیگر:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.net/$1 [L,R=301,NC]

ریدایرکت یک فایل مشخص بر روی فایل دیگر:

Redirect 301 /oldfile.htm /newfile.htm

مخفی سازی پسوند فایل :

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

محافظت از خود فایل .htaccess :

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

محدود کردن نوع فایلهای قابل اجرا و نمایش:

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

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

محدودیت در آپلود فایل :

php_value upload_max_filesize 20M

حداکثر زمان دریافت اطلاعات POST و GET :

php_value max_input_time 250

جلوگیری از سرقت پهنای باند یا جلوگیری از hotlinking :

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?site.com/ .*$ [NC]
RewriteRule \.(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

فعال کردن قابلیت Gzip :

<ifModule mod_deflate.c>
<filesMatch "\.(css|js|x?html?|php|woff|ttf|png|jpg|gif)$">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>

ریدایرکت کردن کل ترافیک  بر روی https:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

عدم نمایش لیست فایلها در یک پوشه:

Options –Indexes

تغییر فایل index پیش فرض:

 DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm 

قرار دادن تصویر پیشفرض:

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

 RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^images/.*.jpg$ /images/default.jpg [L] 

منتقل کردن از چند دامین به یک دامین دیگر:

 RewriteCond %{HTTP_HOST} ^www.domain.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^domain.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.net$ [NC]
RewriteRule ^(.*)$ http://domain.net/$1 [R=301,L] 

فراموش نکنید که :

  • mod_rewrite از درون فایل htaccess اجرا می شود
  • دستورات در فایل htaccess به حروف بزرگ و کوچک حساسند
  • همیشه قبل از دست کاری فایل htaccess از اون نسخه پشتیبان تهیه کنید
صدور فاکتور آنلاین

پاسخ دهید

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