چگونه htaccess. را ایجاد و سفارشی کنیم؟
ما نمیتوانیم دنیای مدرن را بدون فروشگاه آنلاین، موتور جستجو، پیامرسانها و تمام اجزای ارزشمند وب تصور کنیم که به ما امکان میدهد سریعتر با هم ارتباط برقرار کنیم. اما ویژگیهای جدید آسیبپذیریها و جزئیات جدیدی را برای ما به ارمغان میآورند که باید به آنها به سرعت واکنش نشان دهیم. برای این گزینهها به پنل واحد برای کنترل سرور نیاز داریم که htaccess. است!
پیکربندی وب سرورها از طریق فایلهای پیکربندی به چند دلیل یک روش معمول و راحت است:
- انعطافپذیری: فایلهای پیکربندی به مدیران سرور وب اجازه میدهند تا تنظیمات سرور را برای مطابقت با الزامات خاص وبسایت یا برنامهشان بهطور دقیق تنظیم کنند. پارامترهای مختلفی مانند رفتار سرور، تنظیمات امنیتی، میزبانهای مجازی و تنظیمات ماژول را میتوان تنظیم کرد.
- سهولت استفاده: فایلهای پیکربندی معمولا در قالبی قابل خواندن توسط انسان نوشته میشوند و درک و تغییر تنظیمات را برای مدیران آسان میکند. این سادگی امکان تنظیمات و به روز رسانی سریع را بدون نیاز به رابط کاربری پیچیده فراهم میکند.
- کنترل نسخه: فایلهای پیکربندی را میتوان با استفاده از ابزارهایی مانند Git کنترل کرد و ردیابی تغییرات، همکاری با یک تیم و بازگشت به تنظیمات قبلی را در صورت نیاز آسانتر میکند.
- قابلیت حمل: فایلهای پیکربندی را میتوان بین محیطهای سرور مختلف جابهجا کرد، و استقرار یک وبسایت یا برنامه را در سرورهای جدید با تنظیمات مشابه آسانتر میکند.
- اتوماسیون: فایلهای پیکربندی را میتوان به صورت برنامهنویسی تغییر داد یا تولید کرد، که امکان نصب و نگهداری سرور را خودکار میسازد. این به ویژه در هنگام کار با چندین سرور یا هنگام استقرار سایت ها در یک محیط ابری مفید است.
- امنیت: جدا نگه داشتن تنظیمات پیکربندی از کد برنامه، امنیت را افزایش میدهد. اگر کد برنامه به خطر بیفتد، تنظیمات حساس سرور در فایل های پیکربندی محافظت میشوند.
- کارایی: سرورهای وب میتوانند به سرعت فایل های پیکربندی را در حین راه اندازی بخوانند و تجزیه و تحلیل کنند و فرآیند اعمال تغییرات را کارآمد و سریع کنند.
- دانه بندی: فایل های پیکربندی به مدیران اجازه می دهد تا جنبه های مختلف سرور را به طور جداگانه کنترل کنند. به عنوان مثال، آنها میتوانند تنظیمات خاصی را برای میزبانهای مجازی، دایرکتوریها یا مسیرهای URL مختلف پیکربندی کنند.
- استانداردسازی: بسیاری از وب سرورها از فرمتهای فایل پیکربندی آپاچی رایج مانند htaccess. یا nginx.conf در nginx استفاده میکنند که به مدیران اجازه میدهد دانش و تجربه خود را در تنظیمات مختلف سرور اعمال کنند.
به طور کلی، فایلهای پیکربندی یک راه ساده و موثر برای مدیریت وب سرورها ارائه میدهند و به مدیران کنترل و گزینههای سفارشیسازی را برای بهینهسازی عملکرد و امنیت سرور برای برآورده کردن نیازهای خاص خود میدهند.
نیازمندی
- امتیازات کاربر root
- اوبونتو 20.04 یا نسخه بالاتر
- مهارت کار با سیستم عامل
- وب سرور آپاچی
نصب و راه اندازی
اول از همه با به روز رسانی و ارتقاء کل سیستم شروع میشود، دستور زیر:
apt update && apt upgrade -y
اگر از قبل وب سرور آپاچی دارید، میتوانید از این مرحله از نصب صرفنظر کرده و ادامه دهید، اما اگر سروری را آماده نکردید ، دستور زیر را وارد کرده و مطمئن شوید که بسته مورد نیاز خود را دارید:
apt list | grep apache2
پس از آن اگر بسته خود را مانند تصویر بالا پیدا کنیم، وب سرور را نصب کنیم، به طور خودکار اجرا می شود و سرویس آنها را شروع می کند:
apt install apache2
پس از نصب Apache2، به طور خودکار راه اندازی میشود و فایلهای پیکربندی آن بسته به سیستم عامل شما در مکانهای مختلفی قرار میگیرند. در آن وب سرور، از فایل پیکربندی httpd.conf (یا apache2.conf در برخی سیستم ها) برای تنظیم پارامترهای جهانی استفاده میکنیم.
اطمینان از اینکه وبسرور شما اجازه استفاده از فایلهای htaccess را میدهد بسیار مهم است. برای رسیدن به این هدف، بررسی کنید که دستورالعمل AllowOverride در فایل پیکربندی اولیه Apache2 (httpd.conf یا apache2.conf) فعال باشد. مقدار AllowOverride را به All تغییر دهید:
nano ./etc/apache2/apache2.conf
اگر نمی توانید دایرکتوری مورد نیاز را پیدا کنید، از دستور زیر استفاده کنید:
cd / && find ./ -name apache2.conf && find ./ -name httpd.conf
با فعال کردن AllowOverride، به سرور این امکان را میدهید که دستورالعملهای مشخصشده در فایلهای htaccess. واقع در دایرکتوریهای وبسایت شما را تفسیر کند که اجازه میدهد تا پیکربندیهای انعطاف پذیرتر و سفارشیتر در سطح دایرکتوری، افزایش عملکرد کلی و امنیت وب سرور شما.
خرید سرور مجازی لینوکس در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
در سلسله مراتب پیکربندی تنظیمات پیش فرض:
چیدمان فایلهای آپاچی بر اساس سیستم عامل و روش نصب میتواند متفاوت باشد. با این حال، سازمان کلی که معمولا در اکثر تاسیسات استفاده میشود، در زیر آمده است:
- apache2.conf: این فایل به عنوان فایل پیکربندی مرکزی آپاچی عمل میکند و تنظیمات جهانی را نگه میدارد و پارامترهای سرور را تعریف میکند.
- ports.conf: یک فایل پیکربندی ضروری که مسئول تعیین پورتهایی است که سرور به آنها گوش میدهد.
- sites-available/: این دایرکتوری حاوی فایلهای پیکربندی برای هر میزبان مجازی است. در اینجا، میتوانید پیکربندیهای میزبان مختلف را تنظیم کنید. سپس پیکربندیهای میزبان فعال به صورت نمادین از فهرست "sites-enabled/" لینک داده میشوند.
- mods-available/: در داخل این دایرکتوری، فایلهای پیکربندی ماژولهای مختلف آپاچی را پیدا خواهید کرد که به شما امکان میدهد عملکردهای خاصی را مدیریت، فعال یا غیرفعال کنید.
- mods-enabled/: شامل symbolic linkهایی است که از دایرکتوری "mods-available/" به ماژولهای فعال شده متصل میشود و ماژولها را برای استفاده آپاچی فعال میکند.
- conf-available/: این دایرکتوری فایلهای پیکربندی اضافی را در خود جای میدهد که انعطاف پذیری برای گسترش و سفارشی کردن تنظیمات آپاچی را در اختیار شما قرار میدهد.
- conf-enabled/: در این دایرکتوری، symbolic linkهایی به تنظیمات اضافی فعال شده از دایرکتوری "conf-available/" را خواهید یافت. این به شما امکان میدهد بدون تغییر فایلهای پیکربندی اصلی، تنظیمات اضافی را وارد کنید.
اکنون میتوانیم فایل htaccess را که پسوندی برای پیکربندی فعلی ما است، پیکربندی کنیم. تمام تغییرات و مقادیر آن فایل بر روی پیکربندی در نتیجه تاثیر میگذارد. بیایید نشان دهیم که چگونه روی پیکربندی معمولی کار میکند.
ابتدا باید تابع override را فعال کنید و DocumentRoot را در پیکربندی هاست مجازی برای آن در CLI نشان دهید:
mkdir /etc/site-for-test
nano /etc/apache2/sites-available/000-default.conf
پارامتر ServerName را برای دامنه خود تغییر دهید و AllowOverride را برای همه ارزش گذاری کنید. شما باید رکورد مطابق با کنترل پنل DNS داشته باشید که نشان دهنده IP عمومی سرور شما باشد! DocumentRoot را برای دایرکتوری کاری خود با صفحات و فایلهای سایت مورد نیاز تغییر دهید. در آن صورت ما دایرکتوری سایت برای تست را ایجاد میکنیم. در مرحله بعد، اولین صفحه ساده خود را ایجاد کنید یا اگر از وب سایت خود استفاده میکنید، این مرحله را رد کنید:
nano /etc/site-for-test/index.html
محتوای صفحه شما ممکن است با پیکربندی و ساختار دیگری باشد، اما حس ذخیره شده است. بیایید در همان پوشه فایل htaccess ایجاد کنیم که زنجیره منطقی بین html و عملکرد کاربر ایجاد کند. ایجاد فایل:
nano /etc/site-for-test/.htaccess
RewriteEngine On
RewriteRule "hello$ index.html [L]
این پیکربندی توسط دستور RewriteEngine On فعال کردن ماژول rewrite در سرور و در قانون rebuild خام بعدی که به معنای واقعی کلمه با صفحه html و ویژگی [L] اختصاص داده میشود، به این معنی است که آخرین قانون برای اجرا و دنبال کردن دستورالعملها نادیده گرفته میشود. برای کار درست باید ماژول rewrite را فعال کنیم که شامل بسته apache2 و ریستارت سرویس است:
sudo a2enmod rewrite && systemctl restart apache2
بیایید نتیجه اقدامات خود را بررسی کنیم:
کنترل دسترسی
فایل htaccess به عنوان یک ابزار پیکربندی قدرتمند عمل میکند که میتواند دسترسی به فایلها، پوشهها و کل دایرکتوریهای وبسایت را کنترل نماید!
- Order: این دستور توالی اجرای دستورات را تعیین کرده و تقدم دستورالعملهای بعدی را بدون توجه به ترتیب آنها در پرونده تعیین میکند.
- Deny: با استفاده از این دستورالعمل، میتوانید دسترسی به یک دایرکتوری خاص از آدرسهای مشخص شده یا آدرسهای IP را ممنوع کنید.
- Allow: برعکس، این دستورالعمل دسترسی به دایرکتوری را تنها از طریق آدرسهای مشخص شده یا آدرسهای IP مجاز میسازد.
با استفاده از این دستورات، میتوانید به راحتی دسترسی به منابع خاصی را در وب سرور خود تنظیم کنید. به عنوان مثال، میتوانید از htaccess. برای محدود کردن دسترسی به اطلاعات حساس در یک پوشه تعیینشده یا اجازه دسترسی فقط به آدرسهای IP خاص استفاده کنید، در نتیجه امنیت را افزایش داده و کنترل منابع وبسایت خود را اعمال کنید. فایل .htaccess را که قبلا ایجاد کرده بودیم باز کنید و آن پیکربندی را علاوه بر سینتکس قبلی وارد کنید.
Order allow,deny
Allow 1.2.3.4
این پیکربندی دسترسی فرآیند به پوشه روی سرور را تعیین میکند، بنابراین اجازه دسترسی فقط برای IP ما را میدهد. شما باید آن مقدار را به آدرس شبکه خود تغییر دهید! در نتیجه میتوانیم پرچم Forbidden برای ورود به سایت از آدرس IP دیگری را ببینیم:
Indexes restrict
برای افزایش امنیت، میتوانید از لیست دایرکتوری در وب سرور آپاچی جلوگیری کنید. به طور پیش فرض، اگر هیچ فایل index.html یا مشخصی در دایرکتوری یافت نشد، آپاچی لیستی از تمام فایلهای موجود در آن دایرکتوری را نمایش می دهد. برای غیرفعال کردن این ویژگی و محدود کردن فهرست دایرکتوری، پیکربندی زیر را اعمال کنید:
Options -Indexes
Not found — 404
برای هدایت بازدیدکنندگان به صفحه 404 (صفحه "یافت نشد") زمانی که صفحه درخواستی موجود نیست، می توانید کد زیر را پیاده سازی کنید:
nano /etc/site-for-test/error404.html
سپس به پیکربندی htaccess اضافه کنید و راه اندازی را تمام کنید:
ErrorDocument 404 /error404.html
تغییر مسیر (Redirection)
صفحه html را همانطور که در مرحله قبل در نظر گرفتیم ایجاد کنید و فایل مورد نظر را برای تغییر مسیر ایجاد کنید:
nano /etc/site-for-test/targeturl.html
برای رسیدن به تغییر مسیر از hello/ به target/ با تغییر مسیر 301 (permanent)، میتوانید از RewriteRule زیر در فایل htaccess. خود استفاده کنید:
RewriteRule ^hello$ /target [R=301,L]
RewriteRule ^hello$ index.html
RewriteRule ^target$ targeturl.html
RewriteEngine On: این خط RewriteEngine را فعال میکند و امکان استفاده از قوانین ریرایت در فایل htaccess.
RewriteRule ^hello$ /target [R=301,L]: این قانون درخواستهای hello/ را مطابقت می دهد ("^" نشان دهنده شروع و "$" نشان دهنده پایان URL است) و آنها را به target/ هدایت می کند. با استفاده از تغییر مسیر 301 (دائمی). پرچم "R=301" نشان دهنده تغییر مسیر دائمی است و پرچم "L" نشان می دهد که این آخرین قانونی است که باید اجرا شود.
با این پیکربندی، هر درخواستی برای hello/ با کد وضعیت 301 به target/ هدایت می شود، به این معنی که یک تغییر مسیر دائمی خواهد بود. سایر قوانین موجود در فایل htaccess پس از این یکی به دلیل پرچم "L" اجرا نمی شوند.
جمعبندی
فایل htaccess یک ابزار قدرتمند برای کنترل دسترسی به منابع در یک وب سرور است. این امکان را به مدیران وب ارائه می دهد تا ترتیب اجرای دستورالعمل ها را تعریف کنند، دسترسی از آدرس های IP خاص یا آدرس ها را با استفاده از دستورالعمل Deny مسدود کنند و فقط به مکانهای مشخص شده با دستورالعمل Allow دسترسی بدهند. این به مدیران انعطافپذیری را برای سفارشیسازی کنترل دسترسی، تضمین امنیت و کنترل دقیق منابع سرور فراهم میکند.
علاوه بر این، فایل htaccess. اهداف مهم دیگری نیز دارد. میتواند فهرستها را مدیریت کند، از فهرستبندی دایرکتوریها جلوگیری کند و در نتیجه امنیت را با افشای نکردن فایلهای حساس افزایش دهد. بهعلاوه، میتواند خطاهای 404 (یافت نشد) را مدیریت کند، و به مدیران اجازه میدهد تا زمانی که صفحه درخواستی مفقود یا در دسترس نیست، بازدیدکنندگان را به یک صفحه خطای سفارشی هدایت کنند.
علاوه بر این، دستورالعمل RewriteRuleدر فایل htaccess. قابلیتهای تغییر مسیر قدرتمند را فعال میکند. مدیران وب می توانند از این دستورالعمل برای انجام تغییر مسیرهای URL استفاده کنند و بازدیدکنندگان را از یک URL به URL دیگر هدایت کنند. این می تواند برای ایجاد URL های کاربر پسند، اجرای تغییر مسیرهای دائمی یا موقت، یا مدیریت تغییرات ساختار وب سایت مفید باشد.
به طور خلاصه، فایل htaccess یک ابزار همه کاره و ضروری برای پیکربندی وب سرور است. این کنترل دسترسی، امنیت، مدیریت خطا و تغییر مسیر URL را فراهم میکند و آن را به یک جزء ضروری برای بهینهسازی و سفارشیسازی وب سرور برای برآوردن نیازهای وبسایت یا برنامه خاص تبدیل میکند.