• ساعات کار: 24 / 7 / 365

  • شماره تلفن: 011-35331143

آرکا بلاگ

مقدمه ای بر htaccess. و چند مثال کاربردی

امتیاز کاربران

ستاره فعالستاره فعالستاره فعالستاره فعالستاره فعال
 

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

مقاله پیش رو ، شما را تا حدی با محتوای این فایل و همچنین چند مثال کاربردی آشنا خواهد کرد. البته در اعمال تغییرات در این فایل باید نهایت دقت را داشته باشید ، چراکه یک تغییر ساده می تواند عملکرد سایت شما را با اشکالاتی همراه سازد. برای درک بهتر عملکرد این فایل، در ابتدا به معرفی اجمالی وب سرور محبوب آپاچه ( apache ) می پردازیم.

 زمانی که سیستم عامل گنو-لینوکس ( GNU/Linux ) در حال پوست انداختن و رشد در حوزه سیستم عامل های سمت سرور بود ، به ابزاری قدرتمند نیاز داشت تا کار را یکسره کند و گوی رقابت را در حوزه سرویس های وب نیز برباید. در این هنگام بود که وب سرور محبوب Apache ( آپاچه ) متولد شد و شهرت و قدرت لینوکس را به اوج برد و به برگ بنده ای بی بدیل برای لینوکس تبدیل گشت. هم اکنون پس از گذشت قریب به 22 سال از تولد این وب سرور ، طبق آخرین آمار سایت نیکس کرفت ( Nixcraft ) بالغ بر 45 درصد از سایت های اینترنتی از این وب سرور استفاده می کنند. حتی بدون اغراق می توان گفت آپاچه نقش کلیدی در توسعه وب جهانی نیز داشته و دارد.

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


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


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

با قرار دادن این کد ها کل ترافیک هاست به https://www.example.com ریدایرکت می شود.

 

ریدایرکت کردن فقط یک دامنه از سرور بر بستر https :


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

 

قرار دادن فقط یک پوشه از سایت بر بستر https :


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

در این مثال بایستی folder را با نام پوشه مورد نظر جایگزین فرمایید.

 

ریدایرکت کردن سایت بدون 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]

البته اگر بخواهیم این تغییر را به تفکیک http و https صورت دهیم کد ها به این ترتیب خواهد بود:


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

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

 

ریدارکت کردن document root از public_html  به یک پوشه دیگر:


بوسیله ریدایرکت:


RewriteEngine on
RewriteRule   "^/$"  "/folder/"  [R]

بوسیله RedirectMatch :


RedirectMatch "^/$" "http://example.com/folder/"

در این مثال پوشه folder داخل public_html بعنوان document root قرار داده شده است.

 

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


order allow,deny
deny from 1.2.3.4
allow from all

در این مثال همه به سایت دسترسی خواهند داشت بجز ای پی 1.2.3.4

 

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


order allow,deny
allow from 1.2.3.4
deny from all

در کد های فوق بجز آی پی 1.2.3.4 هیچ کس امکان دسترسی به سایت را ندارد. این کد مثلا برای پوشه های حساس سایت مناسب است. مانند پوشه های مدیریتی که فقط مدیر سایت با در اختیار داشتن یک آی پی ثابت و شخصی بتواند به آن بخش متصل شود.

 

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


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]

در این مثال دامنه قدیمی example.com به دامنه جدید example.net ریدایرکت می شود.

 

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


Redirect 301 /oldfile.htm /newfile.htm

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


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

با قرار دادن این کد ها پسوند .php در انتها فایل ها نمایش داده نمی شود.

پل های ارتباطی

ارسال تیکت پشتیبانی

مازندران - بابلسر - خ ولیعصر - وليعصر6 - آپارتمان میلاد - واحد 2 شرقی

011-35331143

30002223344444