آموزش تنظیمات .htaccess در لایت اسپید؛ از افزایش امنیت تا بهینه سازی سرعت

یکی از فایل های مهمی که هر توسعه دهنده یا پشتیبان سایتی با آن برخورد داشته باشد و از آن برای انجام فعالیت های مختلف استفاده کرده باشد فایل .htaccess می باشد.
این فایل که یکی از مهم ترین فایل های پیکربندی وب سرور است به مدیران وب سایت ها اجازه می دهد بدون نیاز به دسترسی مستقیم به تنظیمات اصلی سرور٬ تغییرات مختلفی را روی سایت پیاده سازی کنند.
به کمک این فایل لازم نیست برای تغییرات شخصی سازی خود حتما یک سرور تهیه کنید تا به کانفیگ های سطح بالا دسترسی داشته باشید.
این فایل در وب سرور هایی مانند Apache و LiteSpeed کاربرد دارد و مسیر قرار گیری آن در پوشه اصلی وب سایت می باشد که عموما public_html هست.
نکته ای که باید توجه داشته باشید این است که این فایل در ریشه سایت قرار می گیرد و داکیومنت روت دامنه به عنوان مسیر این فایل شناخته می شود بنابراین اگر شما سایت یا پروژه ای را روی سابدامنه ران کردید٬ تغییراتی که روی .htaccess پوشه public_html داشته باشید تاثیری روی ساب دامنه نخواهد داشت! بنابراین فراموش نکنید داکیومنت روت دامنه شما مسیر اصلی این فایل هست.
نام این فایل مخفف عبارت Hypertext Access است و به دلیل شروع شدن با نقطه، در سیستمعامل لینوکس بهعنوان یک فایل مخفی شناخته میشود.
با استفاده از فایل .htaccess میتوان تنظیمات متنوعی را برای افزایش امنیت، بهبود سرعت بارگذاری و مدیریت دسترسی کاربران اعمال کرد. برای مثال، مسدود سازی آدرس های IP مشکوک، جلوگیری از دسترسی به فایل های حساس، غیرفعال سازی نمایش فهرست پوشه ها، انتقال خودکار HTTP به HTTPS و مدیریت کش مرورگر از جمله قابلیت هایی هستند که میتوان از طریق این فایل پیاده سازی کرد. همچنین امکان بازنویسی آدرس های اینترنتی، ایجاد ریدایرکت های دائمی و موقت و مدیریت برخی هدرهای HTTP نیز از دیگر کاربردهای مهم آن محسوب می شود.
یکی از مزیت ها بسیار خوب و مهم فایل .htaccess این است که بعد از اعمال تغییرات اصلا نیاز به ریستارت وب سرور نیست و قوانین تعریف شده در این فایل بلافاصله برای سایت اعمال می شود و کاربر می تواند تاثیر این تغییرات را در لحظه مشاهده کند.
این فایل به ویژه در سرویس های هاست اشتراکی و کنترل پنل هایی مانند cPanel که کاربران دسترسی مدیریتی به تنظیمات اصلی سرور ندارند، بسیار کاربردی است. علاوه بر این، امکان تعریف تنظیمات مستقل برای پوشه های مختلف سایت وجود دارد به این معنی که مدیر وب سایت می تواند قوانین امنیتی یا محدودیت های دسترسی متفاوتی را برای بخش های گوناگون وب سایت خود در نظر بگیرد.
کاربردهای .htaccess به موارد گفته شده تنها خلاصه نمی شود و نقش مهمی را در بهینه سازی عملکرد وب سایت و بهبود بخشیدن تجربه کاربری هم دارد! تنظیم صحیح کش مرورگر٬ مدیریت درخواست ها و جلوگیری از دسترسی های غیرمجازی می تواند هم مصرف پهنای باند را کاهش دهد و هم از نظر امنیتی وضعیت سایت را بهبود ببخشد..
با وجود قابلیت های گسترده، پیکربندی نادرست فایل .htaccess ممکن است باعث اختلال در عملکرد وب سایت، ایجاد خطا های 403 و 500 یا بروز مشکلات امنیتی شود. همچنین تمامی دستورات Apache الزاما در LiteSpeed عملکرد یکسانی ندارند؛ بنابراین انتخاب کدهای سازگار با نوع وب سرور اهمیت زیادی دارد.
در این مقاله، مهمترین تنظیمات کاربردی فایل .htaccess برای افزایش امنیت و سرعت وب سایت را بررسی می کنیم و با ارائه نمونه کدهای کاربردی، نحوه مسدود سازی دسترسی های مشکوک، محافظت از فایل های حساس، بهینه سازی بارگذاری صفحات و اعمال تنظیمات امنیتی را آموزش خواهیم داد.
محل قرارگیری فایل در cPanel:
برای این که مشخص کنیم این فایل در کجا قرار دارد و امکان ویرایش آن را داشته باشیم همانطور که در مقدمه گفتیم ابتدا باید وارد سی پنل شوید:
ورود به سی پنل:
برای ورود به سی پنل می توانید هم از ناحیه کاربری اقدام به ورود کنید و بعد از انتخاب هاست مورد نظر خود در قسمت مشخصات محصول بر روی ورود به cPanel کلیک کنید.
یا از روش دیگر یعنی ورود با ای پی یا دامنه برای سی پنل استفاده کنید.
برای این روش فقط کافی هست نام دامنه را با پورت 2082 وارد کنید تا صفحه لاگین سی پنل باز شود سپس با یوزرنیم و پسوردی که در مشخصات هاست برای شما ارسال شده است در سی پنل لاگین کنید.
نکته: در این روش اگر می خواهید حتما با دامنه و پورت 2082 بدون SSL و با 2083 با حالت HTTPS وارد سی پنل شوید باید دامنه به هاست متصل باشد و اگر تازه هاست را خریداری کردید و DNS ست نشده یا دامنه فعال نشده است باید از ای پی برای ورود استفاده کنید.
پیدا کردن فایل .htaccess:
بعد از ورود به سی پنل اگر سایت روی دامنه اصلی شما بوده است مسیر پیش فرض در File manager به شکل زیر خواهد بود:
/home/USERNAME/public_html/.htaccess
نکته: باید در نظر داشته باشید که فایل .htaccess همانطور که گفته شد جزو فایل های مخفی هاست می باشد اگر وارد مسیر شدید و این فایل را مشاهده نکردید ابتدا بررسی کنید فایل های مخفی قابل رویت هستند یا خیر! پوشه ها و فایل هایی که با . شروع می شوند جزو فایل های مخفی هستند اگر هیچ پوشه ای را در سی پنل ندیدید که با . شروع شود در واقع نمایش فایل های مخفی بسته هست و برای باز کردن آن باید و گزینه نمایش فایل های مخفی (Show Hidden Files) را فعال کنید.
نمایش فایل های مخفی:
برای نمایش فایل های مخفی در سی پنل فقط کافی هست که در File Manager بر روی Settings کلیک کنید و در نواری که باز می شود تیک مربوط به Show Hidden Files (dotfiles) را فعال کنید مطابق با تصویر زیر:
با کلیک بر روی Save در واقع فایل های مخفی باز می شوند و می توانید فایل .htaccess را مشاهده کنید.
نکته: اگر بعد از فعال کردن فایل های مخفی هم فایل .htaccess دیده نشد می توانید به سادگی یک فایل به نام .htaccess در مسیر بسازید و تغییرات مدنظر خود را وارد آن کنید.
بک آپ گیری قبل از انجام تغییرات از فایل .htaccess:
تغییرات روی فایلی که به صورت مستقیم با وب سرور در ارتباط هست و مسیردهی ها و تنظیمات امنیتی را کنترل می کند همیشه بدون چالش نیست!
در زمان تغییر ممکن است با یک کد اشتباه سایت با خطاهایی نظیر 403 ٬ 404 ٬ 500 و … رو به رو شود که پیدا کردن این که کدام خط کد باعث این مشکل شده DownTime طولانی را برای سایت به همراه داشته باشد.
بهترین گزینه قبل از تغییر روی این فایل این است که یا ابتدا تمام کدهای سالم و درستی که سایت در حال کار هست را در یک فایل txt ذخیره کنید.
یا اینکه از این فایل بک آپ بگیرید! برای مثال با تغییر نام این فایل به .htaccess-backup یک فایل جدید .htaccess بسازید و کدهای خود را در این فایل تست بگیرید و هر زمان هم که مشکلی رخ داد با حذف فایل و ویرایش مجدد نام فایل بک آپ به فایل .htaccess سایت را در دسترس قرار دهید.
اگر از وردپرس استفاده میکنید، مراقب باشید قوانین پیش فرض وردپرس را حذف نکنید چون سایت دچار خطای 404 خواهد شد.
به طور کلی قانون زیر برای درست کار کردن وردپرس همیشه باید در فایل .htaccess وجود داشته باشد:
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
بعد از پیدا کردن فایل .htaccess و بک آپ گیری از آن سراغ مجموع قوانین و رول هایی می رویم که می توانیم در .htaccess اعمال کنیم تا عملکرد سایت را مطابق با انتظاری که داریم بازنویسی کنیم.
قوانین کاربردی برای .htaccess:
در ادامه به چند قانون مهم و کاربردی که در .htaccess می توان قرار داد که به سایت کمک می کند عملکرد بهتری داشته باشد اشاره می کنیم.
1- جلوگیری از نمایش فهرست فایل های پوشه ها:
یکی از مهم ترین اقداماتی که برای افزایش امنیت یک سایت می توان انجام داد این است که جلوی نمایش فهرست فایل ها و پوشه های موجود در هاست را از طریق مرورگر گرفت!
در واقع هیچ شخصی نباید بداند در مسیرهای داخلی پوشه های سایت شما چه فایل ها و پوشه های دیگری وجود دارد.
در اکثر کانفیگ هایی که برای وب سرور ها انجام می شود مسیر های پوشه هایی که فاقد index.php یا index.html هستند ممکن است وب سرور به جای نمایش یک صفحه مشخص، فهرست تمامی فایل ها و زیرپوشه های موجود در آن مسیر را نمایش دهد. این قابلیت با عنوان Directory Listing یا نمایش فهرست دایرکتوری شناخته می شود
وقتی Directory Listing فعال هست اطلاعات ارزشمندی در خصوص ساختار وب سایت شما در اختیار افراد ناشناس و هکرها قرار می گیرد٬ برای مثال کاربران ممکن است بتوانند نام فایل های بکاپ٬ تصاویر٬ اسناد و پوشه های مربوط به افزونه ها یا سایر فایل هایی که در هاست ذخیره کردید را مشاهده کنند و این موضوع زمانی خطرناک تر می شود که این فایل ها شامل اطلاعات حساس هم باشند یا به اشتباه در مسیرهای عمومی قرار گرفته باشند و شما از آن بی اطلاع باشید.
برای مثال در تصویر زیر یک مسیر در سایت فراخوانی شد و به جای اینکه سایت با خطای 403 و عدم دسترسی کاربر را مواجه کند کل پوشه ها را برای کاربر لیست می کند مطابق با تصویر زیر:
از طرف دیگر، مهاجمان می توانند با بررسی نام فایل ها و ساختار پوشه ها، اطلاعات بیشتری درباره سیستم مدیریت محتوا، افزونه های نصبشده یا نحوه سازمان دهی فایل های سایت به دست آورند.
اینکه فایل ها و پوشه های مسیرها نمایش داده می شوند به این معنا نیست که حتما قرار است هک شوید ولی همین مورد یک گام یک هکر را به موفقیت نزدیک تر می کند.
در وب سرور لایت اسپید به سادگی می توان با یک دستور ساده در .htaccess جلوی این مورد را گرفت و قابلیت نمایش فهرست پوشه ها را غیرفعال کرد.
این تنظیم باعث می شود کاربران نتوانند صرفا با وارد کردن آدرس یک پوشه، محتویات آن را مشاهده کنند. در نتیجه، اطلاعات مربوط به ساختار فایل های سایت کمتر در معرض دید عموم قرار میگیرد و یک لایه محافظتی اولیه به امنیت وب سایت اضافه می شود.
برای غیرفعال سازی Directory Listing، دستور زیر را در فایل .htaccess موجود در پوشه اصلی سایت قرار دهید:
Options -Indexes
پس از اعمال این دستور، اگر کاربری وارد پوشه ای شود که فاقد فایل ایندکس است، وب سرور معمولا بهجای نمایش فهرست محتویات، خطای 403 Forbidden را نمایش می دهد. البته این تنظیم مانع دسترسی مستقیم به فایل هایی که آدرس آن ها مشخص است نمی شود؛ بنابراین برای محافظت از اطلاعات حساس باید محدودیت های دسترسی جداگانه ای نیز در نظر گرفته شود.
برای مثال در همان مسیر بالا بعد از قرارگیری این کد به جای اینکه پوشه ها نمایش داده شود پیغام خطای 403 نمایش داده می شود مطابق با تصویر زیر:
در مجموع، غیرفعال سازی نمایش فهرست پوشه ها یکی از ساده ترین و کاربردی ترین تنظیمات امنیتی فایل .htaccess محسوب می شود که توصیه می شود در اغلب وب سایت ها فعال باشد.
2- مسدود سازی IP های مشکوک و مخرب:
گاهی اوقات کاربران وقتی با ابزارهای مانیتورینگ یا ابزارهای امنیتی ورودی کاربران را به صورت لاگ ذخیره می کنند مشاهده می کنند که از یک یا چند IP درخواست های زیادی به سایت زده می شود که در مسیرهایی می باشد که رایج نیست!
در این شرایط به کمک فایل .htaccess به سادگی می توان IP هایی که احساس می کنید مشکوک هستند را مسدود کنید و از دسترسی آن ها به بخش های مختلف وب سایت جلوگیری کنید.
در واقع یکی دیگر از مزیت های کاربردی فایل .htaccess افزایش امنیت سایت با مسدود کردن IP می باشد.
هر سایتی که در طول روز ممکن است از سمت ربات های مخرب٬ ابزارهای اسکن آسیب پذیری یا افرادی مواجه شود که قصد دسترسی غیرمجاز به اطلاعات و بخش های مدیریت سایت را دارند در چنین شرایطی شناسایی و محدود سازی IP های مخرب می تواند به کاهش درخواست های ناخواسته و کم کردن مصرف منابع سایت کمک زیادی کند.
به همین دلیل، مدیران سایت می توانند با بررسی گزارش های دسترسی سرور Access Logs، آدرس های IP مشکوک را شناسایی کرده و در صورت اطمینان از مخرب بودن فعالیت آن ها، دسترسی را محدود کنند.
در وب سرور LiteSpeed می توان از قابلیت URL Rewrite و فایل .htaccess برای مسدود سازی یک یا چند آدرس IP استفاده کرد. در این روش، وب سرور آدرس IP درخواست کننده را با مقادیر تعریف شده مقایسه می کند و در صورت مطابقت، به جای پردازش درخواست، پاسخ خطای 403 Forbidden را بر می گرداند. این قابلیت برای مسدودسازی تعداد محدودی IP شناخته شده کاربرد دارد و بدون نیاز به نصب افزونه اضافی قابل پیاده سازی است.
مسدود سازی چند آدرس IP مشخص:
برای مثال، فرض کنید قصد داریم دسترسی دو آدرس IP مشخص را به وب سایت مسدود کنیم. برای این منظور می توان کد زیر را در فایل .htaccess موجود در مسیر اصلی سایت قرار داد:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^192\.0\.2\.10$ [OR]
RewriteCond %{REMOTE_ADDR} ^198\.51\.100\.25$
RewriteRule ^ - [F,L]
RewriteEngine On: موتور بازنویسی آدرس ها را فعال می کند.
REMOTE_ADDR: آدرس IP شناسایی شده برای درخواست کننده را بررسی می کند.
RewriteCond: شرایط مورد نیاز برای اجرای قانون مسدود سازی را مشخص می کند.
[OR]: تعیین می کند که برقرار بودن یکی از دو شرط برای اجرای قانون کافی است.
RewriteRule ^ - [F,L]: تمام مسیرهای درخواست شده را مورد بررسی قرار می دهد و در صورت برقرار بودن شرط، پاسخ 403 بر می گرداند.
در این مثال، اگر درخواست از یکی از دو آدرس IP تعریف شده ارسال شود، دسترسی آن به سایت مسدود خواهد شد. سایر آدرس های IP تحت تاثیر این قانون قرار نمی گیرند.
نکته: IP های گفته شده باید با IP های مهاجمی که درخواست های مخرب دارند جایگزین شوند و از IP های صحیح باید استفاده کنید.
مسدودسازی یک رنج IP:
بعضی اوقات دیده می شود درخواست های مخرب به جای اینکه از چند IP باشند متعلق به یک رنج مشخص از IP ها می باشد و در چنین شرایطی امکان این نیست که تک تک بخواهیم تمام IP ها را در .htaccess محدود کنیم.
برای حل این موضوع به جای وارد کردن تک IP از رنج IP ها استفاده می کنیم.
برای مثال، کد زیر تمام آدرس های موجود در محدوده 192.0.2.0/24 را مسدود می کند:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^192\.0\.2\.
RewriteRule ^ - [F,L]
عبارت ^192\.0\.2\. مشخص میکند که آدرس IP باید با 192.0.2. شروع شود. بنابراین تمام آدرسهای IPv4 از 192.0.2.0 تا 192.0.2.255 شامل قانون خواهند شد.
نکته: هنگام مسدود سازی یک محدوده IP باید دقت بیشتری داشت؛ زیرا ممکن است کاربران واقعی نیز از همان محدوده به سایت متصل شوند. به همین دلیل، بهتر است پیش از اعمال چنین محدودیتی، گزارش های سرور بررسی شوند تا از وجود درخواست مخرب در کل رنج اطمینان حاصل کرد.
3- جلوگیری از دسترسی به فایل های حساس:
بسیاری از سایت ها برای عملکرد صحیح خود از فایل های کانفیگ، اطلاعات اتصال به پایگاه داده و فایل های گزارش استفاده می کنند. این فایلها معمولا حاوی اطلاعاتی هستند که نباید از طریق مرورگر در دسترس عموم قرار بگیرند.
در بسیاری از موارد دیده شده است که بخاطر اشتباه در کانفیگ های امنیتی و راه اندازی پروژه٬ فایل های حساس در مسیرهای عمومی قرار می گیرند و هکرها به سادگی می توانند به فایل ها دسترسی پیدا کنند و از آن سواستفاده کنند.
یکی از مزیت های دیگر .htaccess این است که می تواند با تعریف قوانین مشخص جلوی دسترسی به فایل های حساس با پسوند های مختلف را گرفت!
برای مثال در پروژه های لاراول فایل .env جزو فایل هایی هست که حاوی رمزهای عبور٬ کلید های دسترسی و تنظیمات اتصال به دیتابیس می باشد و اگر این فایل در اختیار افراد ناشناس قرار بگیرد می توانند به سادگی از آن سواستفاده کنند و سایت دچار مشکل شود.
همچنین دسترسی به فایل های بک آپ هم توسط هکرها می تواند اطلاعات کاربران و دیتابیس را در اختیار آن ها قرار دهد که صدمات جبران ناپذیری ممکن است رخ دهد.
در وبسرور LiteSpeed می توان با استفاده از قوانین فایل .htaccess، دسترسی مستقیم به فایل هایی با نام یا پسوند مشخص را مسدود کرد. در این روش، وبسرور درخواست های مربوط به فایل های حساس را شناسایی کرده و بهجای نمایش یا دانلود آن ها، پاسخ 403 بر می گرداند. این قابلیت یک لایه حفاظتی مهم برای کاهش خطر افشای اطلاعات سایت محسوب می شود.
مسدود سازی دسترسی به فایل های حساس:
برخی از فایل هایی که بهتر است دسترسی عمومی به آن ها محدود شود عبارتاند از:
فایل های .env و نسخه های مختلف آن
فایل های بکاپ دیتابیس با پسوند .sql
فایل های بکاپ با پسوند های .bak ٬ .backup و tar.gz
فایل های گزارش با پسوند .log
فایل های تنظیمات مانند .user.ini و php.ini
فایل های پایگاه داده با پسوند های .sqlite و .sqlite3
برای جلوگیری از دسترسی مستقیم به این فایل ها، کد زیر را در فایل .htaccess موجود در پوشه اصلی سایت قرار دهید:
RewriteEngine On
RewriteRule (^|/)\.env(\.[^/]*)?$ - [F,L,NC]
RewriteRule (^|/)(\.user\.ini|php\.ini|\.htpasswd|\.htaccess)$ - [F,L,NC]
RewriteRule \.(bak|backup|old|orig|save|sql|sqlite|sqlite3|log)$ - [F,L,NC]
نکته: این قوانین ممکن است فایل هایی را که برای دانلود عمومی در نظر گرفتهاید نیز مسدود کنند؛ بنابراین پیش از اعمال آنها، نیازهای وب سایت خود را بررسی کنید.
حفاظت از فایل wp-config.php در وردپرس:
یکی از فایل های مهم در سایت های وردپرسی که شامل اطلاعات اتصال دیتابیس به سایت و پیشوند جداول دیتابیس می باشد در واقع فایل wp-config.php می باشد.
اگرچه در شرایط عادی محتوای فایل های PHP به کاربران نمایش داده نمی شود، اما پیکربندی نادرست سرور ممکن است خطر افشای این اطلاعات را افزایش دهد.
برای جلوگیری از دسترسی مستقیم HTTP به این فایل، میتوانید از کد زیر استفاده کنید:
RewriteEngine On
RewriteRule (^|/)wp-config\.php$ - [F,L,NC]
این قانون دسترسی مستقیم به فایل wp-config.php را مسدود میکند و پاسخ 403 Forbidden بر می گرداند. اجرای عادی وردپرس نیز تحت تاثیر قرار نمی گیرد؛ زیرا وردپرس این فایل را از طریق سیستم فایل سرور بارگذاری می کند.
نکات مهم هنگام محافظت از فایل های حساس:
یک نکته بسیار مهم که در خصوص مسدود سازی فایل های حساس در .htaccess وجود دارد این است که این راهکار تنها یکی از لایه های امنیتی وب سایت می باشد و بهترین گزینه این است که شما کانفیگ و نحوه راه اندازی سایت را به گونه ای انجام دهید که فایل های حساس اصلا در مسیر های عمومی قرار نگیرند.
برای مثال در سایت های لاراول بهتر است هسته وردپرس کاملا جدا از public_html باشد و در پوشه ای قبل از آن راه اندازی شود.
همچنین نباید فراموش کنید بهتر است این قوانین قبل از قوانین Rewrite وردپرس قرار دهید تا قبل از پردازش در وردپرس همان ابتدا بسته شود.
4- افزایش امنیت با هدرهای HTTP:
قابلیت دیگر فایل .htaccess این است که می توان هدرهای امنیتی HTTP را تنظیم کرد.
این هدرها در واقع اطلاعات و دستورالعمل هایی هستند که وب سرور همراه با پاسخ صفحات برای مرورگر کاربران ارسال می کند و مرورگر با بررسی این اطلاعات می تواند رفتارهای ناامن را محدود کند و از اجرای فعالیت هایی که امنیت کاربران را تهدید می کند جلوگیری کند.
هدرهای امنیتی نقش مهمی در کاهش خطر حملاتی مانند Clickjacking، سواستفاده از تشخیص نادرست نوع فایل و افشای اطلاعات مربوط به صفحات بازدید شده دارند. برای مثال، برخی هدرها مشخص می کنند که آیا یک وب سایت اجازه نمایش در iframe را دارد یا خیر! درحالی که برخی دیگر نحوه ارسال اطلاعات Referrer و دسترسی به قابلیت های مرورگر را کنترل می کنند.
در لایت اسپید به سادگی می توان خیلی از این هدرها را از طریق فایل .htaccess تعریف کرد. این قابلیت به خصوص برای مدیران سایت هایی که از هاست اشتراکی استفاده می کنند کاربردی است چون بدون دسترسی به کانفیگ های اصلی سرور می توانند امنیت را افزایش دهند.
تنظیم هدرهای امنیتی در فایل .htaccess:
برای فعال سازی مجموعه ای از هدرهای امنیتی کاربردی، میتوانید کد زیر را در فایل .htaccess قرار دهید:
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
</IfModule>
این دستورات با روش تعریف هدرهای امنیتی در مستندات رسمی LiteSpeed سازگار هستند. البته اعمال آنها به فعال بودن پشتیبانی از دستورات هدر در تنظیمات وب سرور بستگی دارد.
کاربرد هر هدر به شرح زیر است:
X-Content-Type-Options:جلوگیری از تشخیص خودکار و ناامن نوع برخی فایل ها توسط مرورگر
Referrer-Policy:کنترل میزان اطلاعات آدرس صفحه مبدا که به مقصد ارسال می شود.
X-Frame-Options:محدود کردن نمایش صفحات سایت در iframe و کاهش خطر Clickjacking
Permissions-Policy:محدود سازی دسترسی صفحات به قابلیتهایی مانند دوربین، میکروفون و موقعیت مکانی
فعال سازی HSTS برای افزایش امنیت ارتباطات HTTPS:
یکی دیگر از هدرهای امنیتی مهم، HTTP Strict Transport Security یا HSTS است. این هدر به مرورگر اعلام می کند که پس از دریافت آن از طریق یک اتصال HTTPS معتبر، برای مدت مشخصی ارتباطات بعدی با همان دامنه را فقط از طریق HTTPS برقرار کند.
فعالسازی HSTS می تواند احتمال برخی حملات مبتنی بر کاهش ارتباط از HTTPS به HTTP را کم کند و از ارسال ناخواسته اطلاعات از طریق ارتباطات رمزگذاری نشده جلوگیری کند.
برای فعالسازی این قابلیت در LiteSpeed، میتوانید کد زیر را به فایل .htaccess اضافه کنید:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000"
</IfModule>
در این دستور، مقدار max-age=31536000 مشخص می کند که مرورگر سیاست استفاده اجباری از HTTPS را بهمدت ۳۱۵۳۶۰۰۰ ثانیه، معادل یک سال، برای دامنه ذخیره کند.
نکته: هدر HSTS باید فقط زمانی فعال شود که گواهینامه SSL معتبر باشد و تمام بخش های موردنیاز سایت از طریق HTTPS به درستی کار کنند. همچنین بهتر است پیش از انتخاب مدت یک ساله، عملکرد این قابلیت با مدت کوتاه تری آزمایش شود چون مرورگر سیاست HSTS را برای مدت تعیین شده حفظ می کند.
5- انتقال خودکار HTTP به HTTPS:
امروزه کاربران دیگر به سایت هایی که روی حالت HTTPS باز نشوند اعتماد نمی کنند و این ناشی از بالاتر رفتن آگاهی کاربران در بستر اینترنت می باشد.
وقتی وارد سایتی می شوند که خطای SSL دارد با پیغامی مانند تصویر زیر مواجه می شوند:
و طبیعتا کاربران اعتمادی به سایتی که خطای SSL دارد ندارند.
حتی در صورتی که کاربران از طریق HTTP به سایت متصل شوند، اطلاعات مبادله شده در این ارتباط رمزگذاری نمی شوند و ممکن است در معرض تهدیدات امنیتی قرار بگیرند. به همین دلیل، توصیه می شود پس از نصب گواهینامه SSL معتبر، تمام درخواست های HTTP به نسخه HTTPS هدایت شوند. این اقدام علاوه بر افزایش امنیت، به جلوگیری از ایجاد نسخه های مختلف صفحات هم کمک می کند.
.htaccess این امکان را می دهد تا با قرار دادن کدهای مربوط به Force Redirect تمام درخواست ها را از HTTP به HTTPS ریدایرکت کرد.
در این روش، وب سرور نوع اتصال کاربر را بررسی کرده و در صورت استفاده از HTTP، او را با یک ریدایرکت دائمی به نسخه امن سایت منتقل میکند.
کد انتقال خودکار HTTP به HTTPS:
برای فعالسازی این قابلیت، کد زیر را در فایل .htaccess موجود در پوشه اصلی سایت قرار دهید:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
نکته: بهجای example.com دامنه اصلی وب سایت خود را وارد کنید.
کد 301 که در این قوانین قرار می گیرد اشاره به این مورد دارد که به ربات های گوگل بفهماند که این ریدایرکت از HTTP به HTTPS یک ریدایرکت همیشگی هست و اعتبار صفحات HTTP را به صفحه فعلی که HTTPS هست منتقل کند.
برای مثال، اگر کاربری آدرس زیر را وارد کند:
http://example.com/about-usبه صورت خودکار به آدرس زیر منتقل می شود:
https://example.com/about-usپیش از اعمال این تنظیمات، مطمئن شوید که گواهینامه SSL معتبر روی دامنه نصب شده و تمامی صفحات سایت از طریق HTTPS بهدرستی بارگذاری میشوند. در غیر این صورت، کاربران ممکن است با خطاهای مربوط به گواهینامه امنیتی مواجه شوند مانند تصویری که ارسال شد.
در مجموع انتقال خودکار HTTP به HTTPS یکی از ابتدایی ترین کارهایی هست که هر مدیر وب سایتی باید در سایت خود انجام دهد.
6- جلوگیری از اجرای فایل های PHP در پوشه آپلود:
یکی دیگر از اقدامات بسیار مهم امنیتی که می توان در فایل .htaccess انجام داد جلوگیری از اجرای فایل های PHP در پوشه آپلود است!
در سیستم های مدیریت محتوایی نظیر وردپرس٬ کاربران می توانند ویدیو ها و تصاویر را در سایت ها بارگذاری کنند و این ویدیو یا تصاویر وارد مسیر uploads می شوند و در حالت عادی نیازی هم نیست کدهای PHP در این مسیر اجرا شوند.
یکی از تهدیداتی که عموما در این مدل پروژه ها زیاد دیده می شود این است که یک هکر با قرار دادن اسکریپت های مخرب در مسیر آپلود و اجرای فایل PHP از طریق مرورگر در مسیر پوشه های آپلود امکان اجرای دستورات غیرمجاز و یا دسترسی به اطلاعات حساس و حتی تغییرات مخرب در سایت را پیدا می کند.
بنابراین در وب سرور های لایت اسپید بهتر است با تعریف قوانین امنیتی در .htaccess دسترسی مستقیم به فایل های PHP موجود در پوشه آپلود را محدود کرد. این اقدام به کاهش خطر اجرای اسکریپت های مخرب و ایجاد یک لایه امنیتی کاملا موثر و جدی کمک می کند.
کد جلوگیری از اجرای PHP در پوشه uploads:
برای جلوگیری از اجرای PHP در مسیر پوشه های uploads فقط کافی هست وارد مسیر پوشه های آپلودی شوید که عموما در سایت های وردپرسی در مسیر:
public_html/wp-content/uploads می باشد.
سپس یک فایل .htaccess بسازید و کد زیر را قرار دهید.
RewriteEngine On
RewriteRule \.(php[0-9]?|phtml|phar)$ - [F,L,NC]
پس از قرار دادن این قانون درخواست مستقیم برای اجرای فایل های PHP در پوشه های آپلود و زیرپوشه های آن مسدود می شود و در نتیجه از طریق آدرس مستقیم در مرورگر امکان اجرای فایل PHP وجود نخواهد داشت.
توجه داشته باشید که این قانون تنها دسترسی مستقیم HTTP به فایل هایی با پسوند های مشخصشده را محدود می کند و نمی تواند تمام روشهای احتمالی اجرای کد مخرب را مسدود کند. همچنین اگر نرم افزار یا افزونه ای به اجرای مستقیم فایل PHP در پوشه آپلود نیاز داشته باشد، ممکن است عملکرد آن مختل شود.
برای امنیت بیشتر، توصیه میشود محدودیت اجرای اسکریپت ها در پوشه های آپلود از طریق تنظیمات اصلی وب سرور LiteSpeed نیز اعمال شود. همچنین اعتبارسنجی فایل های آپلودشده، بروزرسانی افزونه ها و محدود سازی مجوزهای دسترسی نقش مهمی در جلوگیری از حملات دارند.
7- فعال سازی کش مرورگر برای فایل های استاتیک:
یکی از روش های موثری که برای افزایش سرعت سایت و کاهش زمان بارگذاری صفحات می توان انجام داد فعال کردن کش مرورگر می باشد.
زمانی که کاربر برای اولین بار وارد یک وب سایت می شود، مرورگر فایل های مختلفی مانند تصاویر، فایلهای CSS، JavaScript و فونت ها را از سرور دریافت می کند. اگر این فایل ها در هر بار بازدید مجددا دانلود شوند، علاوه بر افزایش مصرف پهنای باند، زمان بارگذاری صفحات نیز بیشتر خواهد شد.
کش مرورگر قابلیتی است که به مرورگر اجازه می دهد فایل های مشخصی از وب سایت را برای مدت معینی روی دستگاه کاربر ذخیره کند. در نتیجه، هنگام مراجعه مجدد به سایت یا باز کردن صفحات دیگر، مرورگر می تواند از نسخه ذخیره شده فایل ها استفاده کند و نیازی به دریافت دوباره آن ها از سرور نداشته باشد. این موضوع باعث کاهش تعداد درخواست های شبکه، صرفه جویی در پهنای باند و بهبود تجربه کاربری می شود به خصوص برای کاربرانی که اینترنت کندتری هم دارند.
در این روش مرورگر می تواند فایلهایی مثل تصاویر، فونتها، CSS و JavaScript را برای مدت مشخصی ذخیره کند تا در مراجعه های بعدی نیازی به دانلود مجدد آن ها نباشد.
برای مدیریت زمان انقضای فایل های استاتیک، می توان از تنظیمات زیر در .htaccess استفاده کرد.
<IfModule mod_expires.c>
ExpiresActive On
# Images
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType image/avif "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
# CSS and JavaScript
ExpiresByType text/css "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
# Fonts
ExpiresByType font/woff "access plus 1 month"
ExpiresByType font/woff2 "access plus 1 month"
# Icons
ExpiresByType image/x-icon "access plus 1 month"
</IfModule>
این تنظیمات مدت نگهداری فایل ها در کش مرورگر را مشخص می کنند.
برای مثال، تصاویر به مدت یک ماه و فایل های CSS و JavaScript به مدت یک هفته قابل ذخیره سازی خواهند بود.
اگر فایل های استاتیک شما دارای نام نسخه بندی شده یا هش محتوا باشند، می توان مدت کش طولانی تری در نظر گرفت.
توجه داشته باشید که این تنظیمات مربوط به کش مرورگر هستند و با کش صفحات در LiteSpeed Cache تفاوت دارند.
بررسی فعال بودن کش مرورگر:
برای اطمینان از اعمال تنظیمات، می توانید با استفاده از دستور زیر هدرهای یک فایل استاتیک را بررسی کنید:
curl -I https://example.com/style.css
در صورت فعال بودن تنظیمات، معمولا هدرهایی مشابه نمونه زیر مشاهده می شوند:
Cache-Control: max-age=604800
Expires: Fri, 16 Oct 2026 12:00:00 GMT
هدر Cache-Control مدت اعتبار کش را بر حسب ثانیه مشخص می کند و هدر Expires زمان انقضای آن را نشان می دهد. مقدار 604800 معادل هفت روز است.
توجه داشته باشید که کش مرورگر با LiteSpeed Cache تفاوت دارد. کش مرورگر فایل ها را در دستگاه کاربر ذخیره می کند، درحالیکه لایت اسپید کش می تواند نسخه آماده صفحات داینامیک را در سمت سرور نگهداری کند. بنابراین این دو قابلیت می توانند در کنار یکدیگر برای بهبود عملکرد سایت استفاده شوند.
همچنین بهتر است برای صفحات HTML، پنل مدیریت، سبد خرید و صفحات حاوی اطلاعات شخصی، قوانین کش عمومی و طولانی مدت تعریف نشود. کد بالا فقط انواع مشخصی از فایل های استاتیک را هدف قرار می دهد.
اگر از افزونه LiteSpeed Cache در وردپرس استفاده می کنید، ابتدا تنظیمات Browser Cache افزونه را بررسی کنید تا از تعریف قوانین تکراری جلوگیری شود. همچنین باید توجه داشت که فعال شدن این دستورات به پشتیبانی و تنظیمات وب سرور بستگی دارد.
8- جلوگیری از Hotlink تصاویر:
یکی از موارد دیگری هم که عموما در سایت های مبتنی بر تصاویر زیاد دیده می شود این است که سایت های دیگر بدون اینکه تصاویر را در سایت و سرور خود ذخیره کنند مستقیم از لینک سایت مبدا برای استفاده در سایت خود استفاده می کنند و باعث می شوند مصرف پهنای باند سایت افزایش پیدا کند!
این موضوع برای سایت هایی که تصاویر زیادی دارند باعث افزایش مصرف پهنای باند و تحمیل هزینه های اضافی می شود برای مثال، اگر یک سایت پربازدید تصاویر محصولات یا مقالات شما را مستقیما نمایش دهد، هر بار که کاربران آن سایت تصاویر را مشاهده کنند، درخواست جدیدی به سرور شما ارسال می شود. افزایش این درخواست ها ممکن است مصرف منابع سرور را بیشتر کرده و در شرایط پرترافیک بر عملکرد سایت تاثیر بگذارد.
اما راهکار جلوگیری از آن در وب سرورهای مبتنی بر لایت اسپید به کمک فایل های .htaccess سخت نخواهد بود.
در این روش، وب سرور هدر Referer درخواست را بررسی می کند و اگر تصویر از صفحه ای در دامنه ای غیرمجاز درخواست شده باشد، پاسخ 403 Forbidden برمی گرداند. البته درخواست هایی که هدر Referer ندارند، در تنظیم پیشنهادی زیر مجاز خواهند بود.
کد جلوگیری از Hotlink تصاویر در فایل .htaccess:
برای فعال سازی این قابلیت، کد زیر را در فایل .htaccess موجود در پوشه اصلی سایت قرار دهید:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com(:[0-9]+)?(/|$) [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp|avif)$ - [F,L,NC]
نکته: به جای example.com دامنه اصلی سایت خود را وارد کنید. این کد دامنه اصلی و نسخه www آن را مجاز در نظر می گیرد.
برای مثال، اگر دامنه اصلی شما example.com باشد، تصاویر م یتوانند در همین دامنه و نسخه www آن نمایش داده شوند. اما اگر وب سایت دیگری با هدر Referer مربوط به دامنه خودش تلاش کند تصاویر را مستقیما بارگذاری کند، درخواست آن مسدود خواهد شد.
نکته مهم: اگر تصاویر سایت از طریق CDN، زیردامنه های اختصاصی، اپلیکیشن موبایل یا سرویس های خارجی نمایش داده می شوند، باید دامنه های مجاز مورد نیاز را در تنظیمات لحاظ کنید. در غیر این صورت، ممکن است برخی تصاویر در بخشهای مختلف سایت یا سرویسهای مرتبط بارگذاری نشوند.
9- محدود سازی درخواست های مخرب به مسیرهای مشخص:
یکی از اقدامات مثبت دیگری که هم برای افزایش کیفیت سرویس و کاهش منابع و همچنین برای افزایش امنیت در .htaccess می توان انجام داد این است که دسترسی به برخی مسیرها و فایل هایی که بیشتر مورد هدف ربات ها و ابزارهای مخرب قرار می گیرند را محدود کرد.
بسیاری از حملات ربات ها با ارسال درخواست های متعدد به آدرس های شناخته شده، تلاش می کنند فایل های حساس، پنل های مدیریتی، API ها یا نقاط ضعف احتمالی وب سایت را شناسایی کنند. این فعالیت ها علاوه بر افزایش خطرات امنیتی، ممکن است باعث مصرف غیرضروری منابع سرور شوند.
در وردپرس، برخی مسیرها از جمله xmlrpc.php و بخش هایی از REST API ممکن است هدف درخواست های مشکوک قرار بگیرند. اگرچه این مسیرها کاربردهای مشخصی دارند، اما در شرایطی که سایت به آن ها نیاز نداشته باشد، میتوان دسترسی مستقیم به آنها را محدود کرد.
در این روش با قرار دادن کدها در .htaccess می توان به وب سرور اطلاع داد دسترسی به این فایل ها با خطای 403 Forbidden پاسخ داده شود.
این قابلیت به مدیران سایت اجازه می دهد بدون مسدود سازی کامل یک بخش، دسترسی به مسیرهای غیرضروری یا تحت حمله را کنترل کنند.
مسدود سازی دسترسی به فایل xmlrpc.php وردپرس:
فایل xmlrpc.php یکی از بخش های وردپرس است که برای ارتباط با برخی برنامه ها و سرویس های خارجی استفاده می شود. با این حال، این فایل ممکن است هدف حملات خودکار و تلاش های مکرر برای احراز هویت قرار بگیرد. اگر وبسایت شما به قابلیت XML-RPC نیازی ندارد، می توانید درخواست های مستقیم به این فایل را مسدود کنید.
برای این منظور، کد زیر را در فایل .htaccess موجود در پوشه اصلی وردپرس قرار دهید:
RewriteEngine On
RewriteRule ^xmlrpc\.php$ - [F,L,NC]
پس از اعمال این قانون، درخواست مستقیم به آدرس زیر مسدود خواهد شد:
https://example.com/xmlrpc.phpنکته: پیش از مسدودسازی XML-RPC، مطمئن شوید افزونه ها یا سرویس های متصل به وردپرس از این قابلیت استفاده نمی کنند؛ زیرا غیرفعال سازی آن ممکن است عملکرد برخی قسمت ها را مختل کند.
مسدود سازی مسیر مشخص تحت حمله:
گاهی ممکن است یک مسیر خاص از API سایت هدف درخواست های مخرب قرار بگیرد. برای مثال، فرض کنید مسیر زیر به طور مداوم توسط ربات ها بررسی می شود و سایت به آن نیازی ندارد:
https://example.com/wp-json/example/v1/test
برای مسدودسازی این مسیر مشخص میتوانید از قانون زیر استفاده کنید:
RewriteEngine On
RewriteRule ^wp-json/example/v1/test/?$ - [F,L,NC]
این قانون مسیر تعیین شده را با یا بدون اسلش پایانی مسدود می کند و سایر مسیرهای API را تحت تاثیر قرار نمی دهد.
تفاوت مسدود سازی مسیر با Rate Limiting:
برخی از کاربران مسدود سازی یک مسیر مشخص را در .htaccess با قابلیت Rate Limiting اشتباه می گیرند!
این قوانین دسترسی به یک مسیر مشخص را به طور کامل ممنون می کند و امکان این که تعداد درخواست های هر کاربر در یک بازه زمانی مشخص شود نیست.
اما در قابلیت Rate Limiting می توان برای هر ای پی یک تعداد درخواست مشخص تعیین کرد تا اگر مراجعه کننده به سایت شما از این تعداد درخواست مشخص در بازه زمانی عبور کرد با محدودیت رو به رو شود.
برای مقابله با حملات گسترده، درخواست های پرتعداد و حملات Brute Force، بهتر است در کنار قوانین .htaccess از قابلیت های امنیتی LiteSpeed، فایروال ModSecurity یا سرویس های WAF استفاده شود.
10- جلوگیری از نمایش اطلاعات نسخه PHP:
علاوه بر تمام موارد گفته شده یکی دیگر از مواردی هم که می توان در .htaccess برای افزایش امنیت اعمال کرد این است که جلوی نمایش اطلاعات نسخه PHP را در هدرهای HTTP گرفت.
وب سرور ها و زبان های برنامه نویسی ممکن است در زمانی که قرار است به کاربران پاسخ ارسال کنند٬ اطلاعاتی درباره فناوری ها و نسخه های مورد استفاده در سایت را ارسال کنند که این اطلاعات عموما برای عملکرد عادی وب سایت ضروری نیستند و تا حد امکان بهتر است برای افزایش ضریب امنیتی از ارسال آن ها جلوگیری شود.
برای مثال، در برخی پیکربندی های PHP، هدر X-Powered-By همراه با پاسخ سرور ارسال می شود که می تواند نسخه PHP را مشخص کند. مهاجمان ممکن است از این اطلاعات برای شناسایی فناوری های مورد استفاده و بررسی آسیب پذیری های شناخته شده آن نسخه کمک بگیرند. البته مخفیکردن نسخه PHP به تنهایی مانع شناسایی فناوری سرور یا سواستفاده از آسیب پذیری های واقعی نمی شود اما حداقل یک گام می تواند یک هکر را عقب بیاندازد و فرصت سواستفاده را کاهش دهد.
کد جلوگیری از نمایش نسخه PHP در فایل .htaccess:
در حالت عادی ممکن است هدر زیر در پاسخ سایت مشاهده شود:
X-Powered-By: PHP/8.xبرای حذف این هدر، میتوانید کد زیر را در فایل .htaccess موجود در پوشه اصلی سایت قرار دهید:
<IfModule mod_headers.c>
Header unset X-Powered-By
Header always unset X-Powered-By
</IfModule>
این دستورات بر اساس قواعد مدیریت هدرهای HTTP نوشته شده اند، اما اعمال آن ها در LiteSpeed به نسخه و پیکربندی سرور بستگی دارد. بنابراین لازم است نتیجه پس از ذخیره فایل بررسی شود.
بررسی حذف هدر X-Powered-By:
برای اطمینان از حذف اطلاعات نسخه PHP، می توانید دستور زیر را در ترمینال اجرا کنید:
curl -sI https://example.com/ | grep -i "X-Powered-By"اگر هیچ خروجی نمایش داده نشود، هدر X-Powered-By در پاسخ بررسی شده وجود ندارد. برای نتیجه دقیق تر بهتر است یک صفحه PHP را بررسی کنید؛ زیرا ممکن است صفحات استاتیک یا کش شده هدرهای متفاوتی داشته باشند.
11- مسدود سازی متدهای HTTP غیرضروری:
مرورگر ها و نرم افزارهای مختلف برای برقراری ارتباط با وب سرور از متدهایی مانند GET، POST، PUT و DELETE استفاده می کنند. هرکدام از این متدها کاربرد مشخصی دارند و تعیین می کنند سرور چه نوع عملیاتی را روی درخواست دریافتی انجام دهد.
بااینحال، برخی متدها مانند TRACE و TRACK معمولا برای عملکرد عادی وب سایت ها ضروری نیستند و در صورت فعال بودن، ممکن است اطلاعاتی درباره نحوه پردازش درخواست ها در اختیار مهاجمان قرار دهند. برای مثال، متد TRACE برای بازگرداندن اطلاعات درخواست HTTP طراحی شده و در برخی شرایط می تواند در حملات Cross-Site Tracing مورد سواستفاده قرار بگیرد.
در وبسرور LiteSpeed می توان با استفاده از قوانین Rewrite در فایل .htaccess، درخواست هایی را که از متدهای مشخص شده استفاده می کنند، مسدود کرد. این اقدام باعث کاهش سطح حمله وب سایت می شود و از پردازش برخی درخواست های غیرضروری جلوگیری می کند.
کد مسدودسازی متد های HTTP غیرضروری:
برای مسدودسازی متدهای TRACE و TRACK، کد زیر را در فایل .htaccess موجود در پوشه اصلی سایت قرار دهید:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)$ [NC]
RewriteRule ^ - [F,L]
پس از اعمال این قانون، درخواست هایی که با متدهای TRACE یا TRACK ارسال شوند، در صورت رسیدن به پردازش Rewrite مسدود خواهند شد.
بررسی عملکرد قانون
برای بررسی مسدود سازی متد TRACE می توانید از دستور زیر استفاده کنید:
curl -i -X TRACE https://example.com/
اگر قانون توسط LiteSpeed اعمال شود، معمولا پاسخ زیر دریافت خواهد شد:
HTTP/2 403
برای مسدود سازی متدهای TRACE و TRACK، کد البته ممکن است وب سرور یا فایروال، درخواست TRACE را پیش از اجرای قوانین .htaccess رد کند و کد وضعیت متفاوتی مانند 405 Method Not Allowed برگرداند. این پاسخ نیز می تواند نشان دهنده غیرمجاز بودن متد باشد.
توجه داشته باشید که برخی متدها مانند PUT، DELETE و OPTIONS ممکن است در REST API، سرویس های تحت وب یا برنامه های کاربردی مورد استفاده قرار بگیرند. بنابراین مسدود سازی عمومی آن ها بدون بررسی نیازهای سایت می تواند باعث اختلال در عملکرد بخش های مختلف شود.
به همین دلیل، کد پیشنهادی فقط متدهای TRACE و TRACK را هدف قرار می دهد و متدهای متداول مورد نیاز سایت را محدود نمی کند. همچنین برای محافظت بیشتر، بهتر است متدهای غیرضروری در تنظیمات اصلی وبسرور یا لایه فایروال نیز غیرفعال شوند.
12- جلوگیری از دسترسی به فایل های توسعه و اطلاعات ساختار سایت:
خیلی زا وب سایت ها به خصوص پروژه هایی که با PHP ٬ وردپرس٬ لاراول یا سایر فریمورک ها توسعه یافته اند٬ دارای فایل هایی هستند که اطلاعات مهمی درباره ساختار نرم افزار٬ کتابخانه های نصب شده و تنظیمات محیط توسعه در خود دارند.
فایل هایی مانند composer.json، composer.lock و package.json معمولا برای مدیریت وابستگی های نرم افزاری استفاده می شوند. این فایل ها ممکن است نام کتابخانه ها، نسخه پکیج ها و اطلاعات فنی پروژه را مشخص کنند. اگر چنین اطلاعاتی بهصورت عمومی در دسترس باشند، مهاجمان می توانند از آن ها برای شناسایی فناوری های استفاده شده و بررسی آسیب پذیری های احتمالی کمک بگیرند.
در .htaccess می توان با استفاده از کدها این دسترسی های مستقیم به فایل ها را محدود کرد و اگر شخصی تلاش کند به آن ها دسترسی پیدا کند با خطای 403 Forbidden رو به رو خواهد شد.
کد مسدود سازی فایل های توسعه در .htaccess:
برای جلوگیری از دسترسی عمومی به فایل های توسعه، کد زیر را در فایل .htaccess پوشه اصلی سایت قرار دهید:
RewriteEngine On
RewriteRule (^|/)(composer\.(json|lock)|package(-lock)?\.json|yarn\.lock|pnpm-lock\.yaml|phpunit\.xml(\.dist)?|webpack\.config\.js)$ - [F,L,NC]
برای مثال، پس از اعمال این قانون، درخواست مستقیم به آدرس زیر مسدود میشود:
https://example.com/composer.json
بررسی عملکرد قانون:
برای اطمینان از اعمال محدودیت می توانید دستور زیر را در ترمینال اجرا کنید:
curl -I https://example.com/composer.json
اگر فایل مورد نظر وجود داشته باشد و قانون به درستی اعمال شود، انتظار دریافت پاسخ زیر را داریم:
HTTP/2 403
البته در صورتی که فایل وجود نداشته باشد یا تنظیمات امنیتی دیگری روی سایت فعال باشند، ممکن است پاسخ متفاوتی مانند 404 Not Found دریافت شود.
موضوع مهمی که باید به آن توجه داشته باشید این است که باید به شکل استاندارد این فایل ها قبل از مسیر public_html قرار بگیرند و اصلا نباید داخل آن باشند.
استفاده از .htaccess برای جلوگیری از درخواست ها به این فایل ها روش جایگزین راه اندازی اصولی نیست.
13- انتقال خودکار سایت از www به بدون www:
یکی از موضوعات مهم دیگر که در بحث SEO سایت ها هم به آن زیاد پرداخته می شود٬ یکسان سازی آدرس های سایت و جلوگیری از محتوای تکراری است.
خیلی از سایت ها هم با www و هم بدون www قابل دسترسی هستند و کاربران چه با وارد کردن www و چه بدون آن به نسخه های مربوط به وب سایت هدایت می شوند.
این ضعف جایی خودش را نشان می دهد که در موتورهای جستجو ممکن است این دو URL به عنوان دو آدرس مجزا شناسایی شوند.
این موضوع میتواند باعث پراکندگی سیگنال های سئو، ایجاد آدرس های تکراری و پیچیده تر شدن مدیریت لینک های داخلی سایت شود. به همین دلیل، توصیه می شود مدیران وب سایت یکی از دو نسخه را به عنوان دامنه اصلی انتخاب کنند و تمام درخواست های نسخه دیگر را به آن منتقل کنند.
این کار را هم با .htaccess و تعریف قوانین به شکل کاملا ساده می توان مدیریت کرد:
کد انتقال www به بدون www در فایل .htaccess:
برای انجام این کار، کد زیر را در فایل .htaccess موجود در پوشه اصلی سایت قرار دهید:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
نکته: به جای example.com دامنه اصلی سایت خود را وارد کنید.
برای مثال، با اعمال این تنظیمات، آدرس زیر:
https://www.example.com/blogبه صورت خودکار به آدرس زیر منتقل میشود:
https://example.com/blogاین انتقال باعث می شود کاربران و موتورهای جستجو از نسخه اصلی دامنه استفاده کنند.
نکات مهم هنگام یکسان سازی آدرس سایت:
پیش از اعمال این قانون، باید مطمئن شوید که نسخه بدون www به عنوان دامنه اصلی سایت انتخاب شده و گواهینامه SSL معتبر برای آن فعال است. همچنین نسخه دارای www نیز باید به سرور متصل باشد و گواهینامه معتبر داشته باشد تا درخواست های HTTPS پیش از انجام ریدایرکت با خطای SSL مواجه نشوند.
اگر قبلاً قانونی برای انتقال HTTP به HTTPS در فایل .htaccess قرار دادید، بهتر است قوانین را به گونه ای تنظیم کنید که هر دو انتقال با یک ریدایرکت انجام شوند. برای این منظور میتوانید به جای دو قانون جداگانه، از کد ترکیبی زیر استفاده کنید:
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
این قانون برای دامنه تعریف شده تمام درخواست های HTTPS و درخواست با WWW را به نسخه HTTPS تبدیل می کند.
اگر سیستم سایت شما وردپرس است باید در بخش تنظیمات عمومی وردپرس هم نام دامنه را دقیقا مطابق با چیزی که در .htaccess تعریف کردید وارد کنید تا دچار خطای Too Many Redirect نشوید.
14- جلوگیری از دسترسی به فایل های readme و license وردپرس:
گاهی اوقات در زمان نصب وردپرس ممکن است فایل هایی مانند readme.html و license.txt در پوشه اصلی سایت قرار داشته باشند.
این فایل ها شامل توضیحاتی در مورد وردپرس٬ اطلاعات نصب یا شرایط مجوز استفاده از نرم افزار هستند و برای عملکرد روزانه سایت مهم نیستند.
نمایش عمومی این فایل ها می تواند اطلاعات بیشتری درباره سیستم مدیریت محتوای سایت در اختیار بازدید کنندگان قرار دهد. برای مثال، فایل readme.html در برخی نسخه ها شامل اطلاعات مرتبط با انتشار وردپرس است که می تواند به شناسایی نسخه یا ساختار نرم افزار کمک کند. البته این اطلاعات به تنهایی یک آسیبپذیری امنیتی محسوب نمی شوند و روشهای دیگری نیز برای شناسایی نسخه وردپرس وجود دارد.
با این حال می توان آن ها را در .htaccess با تعریف قوانین محدود کرد.
کد مسدود سازی فایل های readme و license:
برای جلوگیری از دسترسی مستقیم به این فایل ها، کد زیر را در فایل .htaccess موجود در پوشه اصلی وردپرس قرار دهید:
RewriteEngine On
RewriteRule ^(readme\.html|license\.txt)$ - [F,L,NC]
پس از اعمال این تنظیم، درخواست مستقیم به آدرس هایی مانند زیر مسدود می شود:
https://example.com/readme.html
https://example.com/license.txt
بهتر است این قانون را پیش از قوانین عمومی Rewrite وردپرس قرار دهید تا درخواستها پیش از هدایت به فایل index.php بررسی شوند. برای اطمینان از عملکرد صحیح نیز می توانید آدرس فایل ها را در مرورگر باز کنید و وضعیت پاسخ سرور را بررسی کنید.
15- محدودسازی دسترسی به صفحه ورود وردپرس با فایل .htaccess:
از دیگر روش های کاربردی افزایش امنیت به کمک فایل .htaccess در واقع می توان به محدود سازی دسترسی به صفحه مدیریت سایت اشاره کرد.
برای مثال در وردپرس برای دسترسی به صفحه ادمین می توان با آدرس wp-login.php اقدام کرد و این یک مسیر شناخته شده برای ربات ها و مهاجمان محسوب می شود.
خیلی از ربات ها با ارسال درخواست های مداوم و مکرر به این صفحه تلاش می کنند نام کاربری و رمز عبور مدیران سایت را شناسایی کنند.
این نوع حملات که با عنوان Brute Force شناخته می شوند، علاوه بر افزایش احتمال دسترسی غیرمجاز به حساب های کاربری، می توانند باعث افزایش تعداد درخواست ها و مصرف منابع سرور شوند. اگرچه استفاده از رمز عبور قدرتمند و احراز هویت دو مرحله ای از مهم ترین روش های محافظت از حساب های مدیریتی است، اما محدود کردن دسترسی به صفحه ورود نیز می تواند یک لایه امنیتی اضافی ایجاد کند.
کد محدود سازی دسترسی به wp-login.php:
برای اینکه فقط یک IP مشخص اجازه دسترسی به صفحه ورود وردپرس را داشته باشد، کد زیر را در فایل .htaccess موجود در پوشه اصلی وردپرس قرار دهید:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192\.0\.2\.10$
RewriteRule ^wp-login\.php$ - [F,L,NC]
نکته: آدرس 192.0.2.10 صرفا یک IP نمونه برای مستند سازی است. پیش از استفاده، حتما آن را با آدرس IP عمومی و ثابت خود جایگزین کنید.
حتما قبل از قرار دادن IP خود اطمینان حاصل کنید که این IP ثابت هست و قرار نیست که تغییر کند!
چون اکثر IP هایی که ISP ها در اختیار کاربران خود قرار می دهند با هر بار اتصال مجدد ممکن است تغییر کند و اگر شما یک IP را وارد کرده باشید و IP تغییر کند دسترسی به صفحه ورود مسدود می شود.
16- ایجاد صفحات خطای اختصاصی 403 و 404:
با .htaccess علاوه بر تمام کارهای گفته شده که در جهت افزایش امنیت و مسیردهی ها قابل انجام می باشد٬ می توان صفحه هایی برای خطا های اختصاصی نظیر 403 و 404 هم ایجاد کرد.
زمانی که کاربران وارد آدرسی می شوند که وجود ندارد یا تلاش می کنند به بخشی از سایت دسترسی پیدا کنند که مجاز نیست، وب سرور معمولا صفحات خطای پیش فرض مانند 404 Not Found یا 403 Forbidden را نمایش می دهد. این صفحات اغلب ظاهر ساده ای دارند و اطلاعات چندانی برای راهنمایی کاربران ارائه نمی کنند.
وقتی شما برای نمایش صفحات خطا ها به کاربران از شیوه های جدید و تصاویری استفاده کنید که اطلاعات بیشتری را در اختیار کاربر قرار دهد در واقع تجربه کاربری را هم برای کاربران بهبود می بخشید و از سردرگمی بازدیدکنندگان می توانید جلوگیری کنید.
برای مثال، در صفحه خطای 404 می توان پیام مناسبی درباره پیدا نشدن صفحه، لینک بازگشت به صفحه اصلی یا امکان جستجو در سایت قرار داد. همچنین صفحه 403 میتواند به کاربر اطلاع دهد که اجازه دسترسی به بخش موردنظر را ندارد.
کد تنظیم صفحات خطای اختصاصی در .htaccess:
ابتدا دو فایل HTML برای خطاهای 403 و 404 در پوشه اصلی سایت ایجاد کنید:
public_html/
├── .htaccess
├── 403.html
└── 404.htmlسپس کد زیر را در فایل .htaccess قرار دهید:
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
توضیح دستورات:
ErrorDocument: صفحه یا محتوای جایگزین برای یک خطای HTTP را مشخص می کند.
403 /403.html: هنگام بروز خطای 403، فایل اختصاصی مربوط به عدم دسترسی را نمایش می دهد.
404 /404.html: هنگام بروز خطای 404، صفحه اختصاصی پیدا نشدن آدرس را نمایش می دهد.
برای مثال، اگر کاربری آدرسی نامعتبر مانند زیر را باز کند:
https://example.com/page-not-foundدر صورت تولید خطای 404 توسط سرور، محتوای فایل 404.html به او نمایش داده می شود. همچنین هنگام تلاش برای دسترسی به یک مسیر ممنوع، صفحه 403.html نمایش داده خواهد شد.
توجه داشته باشید که فایل های 403.html و 404.html باید واقعا در مسیر مشخص شده وجود داشته باشند و وب سرور بتواند آن ها را بخواند. در غیر این صورت، ممکن است صفحه خطای پیش فرض نمایش داده شود.
همچنین بهتر است صفحات خطای اختصاصی سبک باشند و از تصاویر حجیم، اسکریپت های غیرضروری و وابستگی زیاد به فایل های خارجی استفاده نکنند. این موضوع باعث می شود حتی در شرایط بروز خطا، صفحات راهنما سریع تر بارگذاری شوند.
17- ریدایرکت 301 صفحات قدیمی به آدرس جدید:
وقتی یک سایت مدتی از فعالیت آن می گذرد ممکن است آدرس برخی صفحات به دلایل مختلفی مانند تغییر ساختار لینک ها٬ طراحی مجدد سایت٬ حذف محصولات یا جابه جایی مقالات تغییر کند و اگر این تغییرات به درستی مدیریت نشوند کاربران که از طریق لینک های قدیمی که در قسمت های مختلف مانند شبکه های اجتماعی یا ریپورتاژ آگهی ها وارد سایت می شوند با خطای 404 رو به رو شوند.
این مورد علاوه بر تجربه منفی که کاربران می توانند با آن رو به رو شوند روی SEO سایت هم تاثیر بسیار منفی خواهد داشت.
تغییر آدرس صفحات بدون ایجاد ریدایرکت مناسب می تواند باعث از دست رفتن بخشی از ارزش لینک های ورودی و ایجاد مشکلات فنی در سئو شود. برای مثال، اگر آدرس یک مقاله تغییر کند اما لینک های قدیمی همچنان در موتورهای جستجو یا سایت های دیگر وجود داشته باشند، کاربران دیگر نمی توانند به راحتی محتوای مورد نظر خود را پیدا کنند.
در وب سرور LiteSpeed می توان با استفاده از قوانین Rewrite در فایل .htaccess، کاربران و موتورهای جستجو را به صورت خودکار از آدرس قدیمی به آدرس جدید منتقل کرد. استفاده از ریدایرکت دائمی 301 به موتورهای جستجو اعلام می کند که صفحه مورد نظر به آدرس جدید منتقل شده است و آدرس جدید باید به عنوان مقصد اصلی در نظر گرفته شود.
کد ریدایرکت 301 صفحات قدیمی در .htaccess:
فرض کنید آدرس یکی از مقالات سایت از /old-article/ به /new-article/ تغییر کرده است. برای انتقال کاربران، کد زیر را در فایل .htaccess موجود در پوشه اصلی سایت قرار دهید:
RewriteEngine On
RewriteRule ^old-article/?$ /new-article/ [R=301,L]
توضیح دستورات:
RewriteEngine On: موتور بازنویسی آدرس های وب سرور را فعال میکند.
^old-article/?$: آدرس قدیمی صفحه را با اسلش پایانی یا بدون آن شناسایی می کند.
/new-article/: مسیر جدید صفحه را مشخص می کند.
[R=301,L]: ریدایرکت دائمی انجام می دهد و پردازش قوانین Rewrite بعدی را متوقف می کند.
پس از اعمال این تنظیم، کاربری که وارد آدرس زیر شود:
https://example.com/old-article/به آدرس جدید منتقل خواهد شد:
https://example.com/new-article/
ریدایرکت چند صفحه به آدرس های جدید:
اگر چندین صفحه تغییر آدرس دادند، می توانید برای هرکدام یک قانون جداگانه تعریف کنید:
RewriteEngine On
RewriteRule ^old-product/?$ /new-product/ [R=301,L]
RewriteRule ^old-category/?$ /new-category/ [R=301,L]
RewriteRule ^old-contact/?$ /contact-us/ [R=301,L]
این قوانین هر آدرس قدیمی را به مقصد مشخص شده منتقل می کنند و از نمایش خطای 404 برای لینک های قبلی جلوگیری خواهند کرد؛ البته به شرطی که آدرس مقصد معتبر و در دسترس باشد.
بررسی عملکرد ریدایرکت 301:
برای اطمینان از عملکرد صحیح قوانین، میتوانید از دستور زیر استفاده کنید:
curl -I https://example.com/old-article/در صورت اجرای صحیح ریدایرکت، پاسخی مشابه زیر دریافت خواهید کرد:
HTTP/2 301
Location: https://example.com/new-article/هدر Location آدرس مقصد را مشخص می کند و کد 301 نشان دهنده انتقال دائمی صفحه است.
توجه داشته باشید که ریدایرکت 301 باید به صفحهای مرتبط با محتوای قبلی انجام شود. انتقال تمام صفحات حذف شده به صفحه اصلی سایت، بدون وجود ارتباط محتوایی، روش مناسبی برای سئو نیست و ممکن است باعث ایجاد تجربه نامناسب برای کاربران شود.
همچنین بهتر است قوانین ریدایرکت را پیش از قوانین عمومی Rewrite وردپرس قرار دهید تا درخواست ها قبل از پردازش توسط سیستم مدیریت محتوا به مقصد جدید هدایت شوند.
خلاصه دستورات کاربردی فایل .htaccess:
در این مقاله با مهم ترین تنظیمات فایل .htaccess برای افزایش امنیت، بهبود سرعت بارگذاری و مدیریت درخواست های وب سایت در وبسرور LiteSpeed آشنا شدیم. برای دسترسی سریع تر به دستورات، به صورت خلاصه دوباره کد ها را برای شما می نویسیم:
1- جلوگیری از نمایش فهرست پوشه ها:
این دستور قابلیت Directory Listing را غیرفعال می کند و مانع نمایش فهرست فایل های پوشه های بدون فایل ایندکس می شود.
Options -Indexes
2- مسدود سازی آدرس های IP مشکوک:
با این قانون می توانید دسترسی IP های مشخص را به سایت مسدود کنید. آدرس های نمونه را با IP های واقعی جایگزین کنید.
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^192\.0\.2\.10$ [OR]
RewriteCond %{REMOTE_ADDR} ^198\.51\.100\.25$
RewriteRule ^ - [F,L]
3- جلوگیری از دسترسی به فایل های حساس:
برای محافظت از فایل های پیکربندی، گزارش ها و نسخه های پشتیبان می توانید درخواست های مستقیم به آن ها را محدود کنید.
RewriteEngine On
RewriteRule (^|/)\.env(\.[^/]*)?$ - [F,L,NC]
RewriteRule (^|/)(\.user\.ini|php\.ini|\.htpasswd|\.htaccess)$ - [F,L,NC]
RewriteRule \.(bak|backup|old|orig|save|sql|sqlite|sqlite3|log)$ - [F,L,NC]
RewriteRule ^wp-config\.php$ - [F,L,NC]
4- فعال سازی هدرهای امنیتی HTTP:
هدرهای زیر به کاهش خطر Clickjacking، کنترل اطلاعات Referrer و محدود سازی برخی قابلیت های مرورگر کمک می کنند.
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
</IfModule>
5- انتقال خودکار HTTP به HTTPS:
با این قانون می توانید کاربران را از نسخه HTTP به آدرس امن HTTPS منتقل کنید. دامنه نمونه باید تغییر داده شود.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
6- فعال سازی کش مرورگر:
این تنظیمات به مرورگر اجازه می دهند فایل های استاتیک را برای مدت مشخص نگهداری کند تا درخواست های تکراری کاهش پیدا کنند.
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType image/avif "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType font/woff2 "access plus 1 month"
</IfModule>
7- جلوگیری از Hotlink تصاویر:
این قانون از بارگذاری تصاویر سایت در صفحات دامنه های غیرمجاز که هدر Referer ارسال می کنند جلوگیری می کند.
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com(:[0-9]+)?(/|$) [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp|avif)$ - [F,L,NC]
8- مسدود سازی XML-RPC وردپرس:
اگر سایت به XML-RPC نیازی ندارد، می توانید دسترسی مستقیم به xmlrpc.php فایل را ممنوع کنید.
RewriteEngine On
RewriteRule ^xmlrpc\.php$ - [F,L,NC]
9- جلوگیری از نمایش اطلاعات نسخه PHP:
این دستورات برای حذف هدر X-Powered-By از پاسخهای HTTP استفاده می شوند. تاثیر آن ها باید در پیکربندی LiteSpeed بررسی شود.
<IfModule mod_headers.c>
Header unset X-Powered-By
Header always unset X-Powered-By
</IfModule>
10- مسدود سازی متدهای غیرضروری HTTP:
برای محدود کردن درخواست هایی که از متدهای TRACE و TRACK استفاده می کنند، می توانید از کد زیر کمک بگیرید.
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)$ [NC]
RewriteRule ^ - [F,L]
11- یکسان سازی آدرس سایت با حذف www:
کد زیر کاربران را از نسخه دارای www به نسخه بدون آن منتقل می کند و به یکپارچگی URL های سایت کمک می کند.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
12- محدودسازی دسترسی به صفحه ورود وردپرس:
اگر IP ثابت دارید، می توانید اجازه دسترسی مستقیم به wp-login.php را فقط برای IP مشخص شده صادر کنید.
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192\.0\.2\.10$
RewriteRule ^wp-login\.php$ - [F,L,NC]
13- ایجاد صفحات خطای اختصاصی
برای نمایش صفحات سفارشی هنگام بروز خطاهای 403 و 404 از دستورهای زیر استفاده کنید. فایلهای مربوطه باید در مسیر تعیینشده وجود داشته باشند.
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
14- ریدایرکت 301 صفحات قدیمی
با این دستور میتوانید کاربرانی را که وارد آدرس قدیمی یک صفحه میشوند، به آدرس جدید منتقل کنید.
RewriteEngine On
RewriteRule ^old-article/?$ /new-article/ [R=301,L]
15- جلوگیری از اجرای مستقیم PHP در پوشه آپلود:
این دستور مخصوص فایل .htaccess داخل پوشه wp-content/uploads است و نباید بدون بررسی در فایل اصلی ریشه سایت قرار بگیرد.
RewriteEngine On
RewriteRule \.(php[0-9]?|phtml|phar)$ - [F,L,NC]
16- ایجاد صفحات خطای اختصاصی 403 و 404:
برای نمایش صفحات سفارشی هنگام بروز خطاهای دسترسی یا پیدا نشدن صفحات، از دستورهای زیر استفاده کنید.
ErrorDocument 403 /403.html
ErrorDocument 404 /404.htmlفایلهای 403.html و 404.html باید در پوشه اصلی سایت ایجاد شده باشند.
17- ریدایرکت 301 صفحات قدیمی به آدرس جدید:
با این قانون می توانید کاربران و موتورهای جستجو را از آدرس قدیمی یک صفحه به آدرس جدید و مرتبط منتقل کنید.
RewriteEngine On
RewriteRule ^old-article/?$ /new-article/ [R=301,L]برای انتقال چند صفحه نیز می توانید قوانین جداگانه تعریف کنید:
RewriteEngine On
RewriteRule ^old-product/?$ /new-product/ [R=301,L]
RewriteRule ^old-category/?$ /new-category/ [R=301,L]
RewriteRule ^old-contact/?$ /contact-us/ [R=301,L]
اشتباهات رایج در پیکربندی فایل .htaccess:
با وجود تمام قابلیت های خوبی که فایل .htaccess برای افزایش امنیت و سرعت سایت در اختیار کاربران قرار می دهد اما می تواند همان اندازه هم برای یک سایت مشکل ساز شود!
یکی از رایج ترین اشتباهاتی که مدیران وب سایت ها انجام می دهند این است که دستورات مختلف .htaccess را در اینترنت برمیدارند و بدون بررسی با نسخه وب سرور و سازگاری با ساختار سایت در داخل این فایل کپی می کنند.
این که تصور کنید با اضافه کردن تعداد زیادی قانون امنیتی یا بهینه سازی قرار است افزایش امنیت یا سرعت خاصی را مشاهده کنید صحیح نیست! در برخی شرایط این تنظیمات ممکن است باعث ایجاد خطاهایی نظیر 403 ٬ 500 و 503 شوند و اختلال را در بارگذاری صفحات ایجاد کنند و حتی باعث حلقه های ریدایرکت یا مسدود شدن درخواست های ضروری شوند. به همین دلیل آشنایی با اشتباهات رایجی که در خصوص این فایل برای مدیران وب سایت رخ می دهد می تواند از اهمیت بالایی برخوردار باشد.
در ادامه به مهم ترین اشتباهاتی که باید هنگام پیکربندی فایل .htaccess از آنها جلوگیری کنید، اشاره می کنیم.
1- استفاده از دستورات ناسازگار با وب سرور:
یکی از اولین اشتباهات و شاید رایج ترین اشتباهی که عموما مدیران وب سایت ها انجام می دهند این است که از کدهای مخصوص Apache در وب سرور لایت اسپید استفاده می کنند.
اگرچه وب سرور لایت اسپید از خیلی از دستورات آپاچی پشتیبانی می کند اما برخی قوانین به خصوص دستورات مربوط به Rewrite، کش و فشرده سازی، ممکن است رفتار متفاوتی داشته باشند. بنابراین بهتر است پیش از استفاده از هر دستور، سازگاری آن با نسخه و تنظیمات وب سرور بررسی شود.
2- فعال سازی نادرست یا بیش از حد کش:
تنظیم اشتباه کش مرورگر یا کش صفحات می تواند باعث نمایش محتوای قدیمی به کاربران شود. این مشکل به خصوص در سایت های فروشگاهی، پنل های کاربری و صفحاتی که اطلاعات آن ها مرتب تغییر میکند، اهمیت بیشتری دارد.
برای جلوگیری از این مشکل، باید مدت زمان کش متناسب با نوع محتوا تعیین شود و از اعمال کش عمومی روی صفحات حساس یا شخصی سازی شده خودداری کرد.
3- مسدودسازی اشتباهی مسیرهای ضروری سایت:
برخی مدیران برای افزایش امنیت، دسترسی به تعداد زیادی فایل، پوشه یا مسیر را مسدود می کنند بدون اینکه از کاربرد آن ها اطلاع داشته باشند.
این کار ممکن است باعث اختلال در عملکرد API ها، افزونه ها، پنل مدیریت یا فرآیند صدور و تمدید گواهینامه SSL شود.
برای مثال، مسدود کردن مسیر .well-known در برخی پیکربندی ها میتواند فرآیند اعتبارسنجی گواهینامه SSL را مختل کند.
4- استفاده از قوانین تکراری و ایجاد تداخل:
تعریف چند قانون مشابه برای انتقال HTTP به HTTPS، حذف www یا بازنویسی آدرس ها ممکن است باعث ایجاد ریدایرکت های اضافی یا خطای Too Many Redirects شود.
همچنین قرار دادن قوانین سفارشی در محل نامناسب فایل .htaccess می تواند با دستورات پیش فرض وردپرس یا سایر سیستم های مدیریت محتوا تداخل ایجاد کند. به همین دلیل، بهتر است قوانین مشابه ادغام شوند و ترتیب اجرای آن ها به درستی بررسی شود.
5- جایگزین کردن تنظیمات امنیتی سرور با .htaccess:
یکی دیگر از اشتباهات متداول، تصور این موضوع است که با اضافه کردن چند دستور امنیتی به فایل .htaccess، سایت بهطور کامل در برابر حملات محافظت میشود!
در حالی که این فایل تنها یکی از لایه های امنیتی وب سایت است و نمیتواند جایگزین فایروال، ModSecurity، تنظیمات امنیتی LiteSpeed، بروزرسانی PHP و استفاده از نرم افزارهای امن شود.
6- اعمال تغییرات بدون تهیه نسخه پشتیبان و آزمایش:
از مهم ترین اشتباهات هنگام ویرایش فایل .htaccess، اعمال تغییرات مستقیم روی سایت اصلی بدون تهیه نسخه پشتیبان است. حتی یک دستور اشتباه ممکن است باعث از دسترس خارج شدن سایت یا ایجاد خطای 500 شود. بنابراین توصیه می شود پیش از هر تغییری از فایل نسخه پشتیبان تهیه کنید و پس از اضافهکردن هر قانون، عملکرد سایت را بررسی کنید.
همچنین برای تنظیمات مربوط به افزایش سرعت، بهتر است تغییرات با ابزارهای بررسی عملکرد و اندازه گیری زمان بارگذاری صفحات ارزیابی شوند؛ زیرا تعداد بیشتر دستورات همیشه به معنای عملکرد بهتر نیست.
جمع بندی:
نباید فراموش کرد که مدیریت یک وب سایت تنها به تولید محتوا٬ طراحی ظاهری و یا نصب افزونه های مختلف محدود نمی شود و بخش مهمی از کیفیت و پایداری یک وب سایت به تنظیماتی برمیگردد که در سایت پیاده سازی می شود.
فایل .htaccess یکی از ابزارهایی است که به مدیران سایت اجازه می دهد کنترل بیشتری بر این ارتباط داشته باشند و بدون نیاز به دسترسی مستقیم به تنظیمات اصلی سرور، برخی از رفتارهای وب سایت را مطابق با نیاز خود مدیریت کنند.
این نکته را هیچ وقت فراموش نکنید که امنیت و سرعت یک سایت نتیجه یک تنظیم خاص و مشخص نیست بلکه مجموعه از تصمیمات درست در بخش های مختلف هست که یک سایت را از یک سایت معمولی به یک سایت حرفه ای تبدیل می کند.
حتی اگر بهترین تنظیمات امنیتی روی یک وب سایت پیاده شود ولی نرم افزارهای قدیمی و افزونه های آسیب پذیر در سایت استفاده شده باشد همچنان ضریب امنیتی کاهش پیدا می کند.
از طرف دیگر، سرعت مناسب نیز تنها به تنظیمات وب سرور وابسته نیست و عواملی مانند کیفیت سرویس میزبانی، بهینه بودن کد های سایت، حجم تصاویر و عملکرد پایگاه داده در آن نقش دارند.
در وب سرور لایت اسپید، شناخت قابلیت های داخلی سرور و استفاده صحیح از آن ها اهمیت ویژه ای دارد. بسیاری از امکانات بهینه سازی در این وب سرور به صورت اختصاصی طراحی شده اند و استفاده نادرست یا تکراری از تنظیمات مختلف ممکن است به جای بهبود عملکرد، نتیجه معکوس داشته باشد.
در نهایت باید بدانید که هدف از تنظیم کردن فایل .htaccess صرفا اضافه کردن محدودیت بیشتر یا افزایش تعداد قوانین نیست بلکه قرار است یک تعادل میان امنیت٬ سرعت٬ پایداری و تجربه کاربری باشد.
اگر سایت خود را سریع و بدون هیچ اختلالی در اختیار کاربران واقعی قرار دادید در واقع می تواند یک عملکرد عالی برای شما باشد.














