Comparison of web server software
The Apache HTTP Server, commonly referred to as Apache, is a web server notable for playing a key role in the initial growth of the World Wide Web. It simply is the most popular with millions of users. If you are a newbie there is a great likelihood that you will pick Apache simply due to its heritage and you would not be making a mistake. But as your sites pick up speed more complex situations arise and more research is necessary to find a server that meets your requirements better.
So things have changed. Others like Nginx and Lighttpd have different and useful approaches. All of these are open source. Lets look at them one by one.
i-apache-2.2
1. It is a process based server meaning each simultaneous connection requires a thread which incurs significant overhead. If there is a low volume of connections then there isn’t much difference between these three servers. Please read on for better understanding. But Apache is undoubtedly the best process based server
2. Has features like
Static file serving.
SSL/TLS support.
Virtual hosts.
Reverse proxying.
Load balancing.
Compression.
Access controls.
URL rewriting.
Custom logging.
Server-side includes.
Limited WebDAV.
FLV streaming.
FastCGI
3. The new Apache 2 has a long list of improvements though. And one thing for sure is an Apache has more tricks than the other two servers we are comparing here. Please visit their site for better understanding.
1. It is an asynchronous system meaning it handles requests in a single (or at least, very few) threads. This causes less use of resource and hence is faster. The main advantage of the asynchronous approach is scalability.
2. Has all the main features that an Apache has. Nginx focuses on a smaller pool of functions which is probably why it does these things efficiently.
3. Serving 10,000 simultaneous connections would probably only cause Nginx to use a few megabytes of RAM whereas Apache would probably consume hundreds of megabytes (if it could do it at all). Please visit their site for better understanding. Worpress runs slightly faster in Nginx than Apache. Nginx install slightly faster as well which is not a major advantage really.
Also Read : How to install Nginx PHP and MySQL on Windows
light_logo_wide1
1. Again Lighttpd is an asynchronous server. It runs as single process with a single thread and non-blocking I/O (it is technical so click the link for detail).
2. Nginx and Lighttpd are very alike and bear similar features. Lighttpd runs as a single process with a single thread and non-blocking I/O where as nginx works as one master process but delegates its work unto worker processes.
3. Various websites have clearly suggested that Nginx is faster and more reliable than Lighttpd. Please visit their site for better understanding.
OpenLiteSpeed vs. LiteSpeed Enterprise - LiteSpeed Technologies
Litespeed vs Nginx vs Apache: Which Web Server Is the Best?
LiteSpeed vs NGINX vs Apache - HOSTAFRICA
Lighttpd was the fastest overall in this test, however what probably stands out the most is the inefficiency of Apache with both server load and memory usage increasing considerably during the test. The reason for this may be down to Apache spawning additional processes when it is receiving a large volume of requests, which results in the higher memory usage. The memory usage with Nginx and Lighttpd increases by a much smaller amount because each of them runs a fixed number of PHP CGI processes (20 in this case).
Apache is definitely the winner in terms of module support and ease of configuration, but I may have a somewhat biased view as I've worked with Apache for years. Nginx is probably the hardest to setup and configure, however after switching from PHP-CGI to PHP-FPM this made things easier and it does seam there are more configuration examples floating around on the net than for Lighttpd. Lighttpd is notorious for memory leaks, I'm not sure if this is still an issue with current versions.
/etc/php/8.2/apache2/php.ini
upload_max_filesize = 100M
/etc/nginx/nginx.conf
http {
# set client body size to 2M #
client_max_body_size 100M;
راهنمای استفاده از قابلیتهای فایل htaccess (سرویس میزبانی لینوکس)
RewriteCond %{REQUEST_URI} !/images/.*
RewriteRule ^(.*\.(gif|jpg|png))$ images/$1 [QSA,L]
این فایل که معمولا با نصب CMSهای معروف و Open Source مانند WordPress، Joomla و Drupal به صورت خودکار در مسیر اصلی اسکریپت ایجاد و محتوا سازی میشود همچنین جهت دسترسی به فایل htaccess در کنترل پنل Cpanel میتوانید از راهنمای موجود در سایت نیز استفاده نمایید.
.htaccess مخفف hypertext access بوده و در عمل یک فایل پیکربندی (Configuration File) است که نحوۀ پاسخگویی وب سرور به درخواستهای مختلف را کنترل میکند. بیشترهاستینگها از این فایل در وبسرور Apache استفاده میکنند؛ در وبسرورهای دیگری مثل IIS هم میشود از .htaccess استفاده کرد. مثلاً در صورت نصب افزونه Helicon Ape بروی IIS . این فایل که نحوه نمایش صفحات وب را کنترل میکند، چنانچه در مسیر یک دایرکتوری یا فولدر قرار داشته باشد، تمامی کدها و پیکربندیهای تعریف شدهی موجود در این فایل بر روی دایرکتوری مذکور و نیز دایرکتوریهای زیر مجموعه اجرا خواهد شد. بدین معنا که در صورت عدم وجود این فایل، پیکربندی و سیاستهای امنیتی از طریق فایل httpd.conf واقع در وبسرور خوانده میشود و زمانی که فایل htaccess. در مسیر یکی از دایرکتوریها قرار میگیرد وب سرور دستورات درج شده در محتویات درون این فایل را به فایل httpd.conf ترجیح و اولویت میدهد.
بهطور کلی، با استفاده از این فایل، یعنی htaccess، میتوانید صفحهای را به صفحه دیگر ریدایرکت کنید، پسوند فایلهای مختلف را تغییر دهید، پوشهها را رمزگذاری کنید، روی سئو کار کنید و خیلی موارد دیگر!
مسدودسازی IPهای خاص: یکی از ویژگیها و کاربردهای مهم فایل Htaccess مسدود سازی و جلوگیری از دسترسی IPها و رنج ایپیها به بخشهای مهم سایت از قبیل دایرکتوریها و فایلها میباشد. با مسدودسازی IPهای خاص در واقع مجوز ورود و دسترسی به بخشهای مختلف وبسایت از آن IPها سلب میشود که این عمل میتواند موجب کاهش اثر حملات DDOS، جلوگیری از دسترسی به وبسایت توسط IP کشورهای گوناگون و … میگردد. برای مسدود سازی Ipهای خاص در فایل htacces لازم است مقاله ” چگونگی مسدود کردن IP در htaccess ” را مطالعه فرمایید.
جلوگیری از عمل Hotlink: این قابلیت مهم که با عنوان Hotlink Protection در منوی اصلی cPanel نیز قرار داشته و قابل فعالسازی میباشد، از کپی شدن اطلاعات شما در وبسایتهای دیگر جلوگیری مینمایید. به عنوان مثال با فعال سازی قابلیت Hotlink Protection چنانچه تصویری در یک دایرکتوری از سرویس میزبانی شما وجود دارد، از نمایش آن تصویر در وبسایتهای دیگر جلوگیری به عمل میآید و همچنین چنانچه فایلی قابلیت دانلود با لینک مستقیم با استفاده از وبسایت شما را دارد و لینک مذکور در وبسایتی دیگر کپی گردیده باشد، کاربران آن وبسایت با کلیک بر روی لینک مذکور ابتدا به آدرس وبسایت شما ارجاع داده میشوند. از این رو جهت استفاده از قابلیت Hotlink Protection لازم است ضمن مطالعه مقاله ” نحوه جلوگیری از عمل Hotlink در فایل .htaccess و cPanel ” موجود در سایت نسبت به فعال کردن این قابلیت اقدام فرمایید.
اعمال رمز عبور برای دایرکتوری (Password Protection): همانگونه که در مقاله ” نحوه قراردادن رمز عبور بر روی دایرکتوری در سی پنل ” نیز شرح داده شده است، با اعمال چند خط کد ساده در فایل htaccess. میتوان دسترسی به دایرکتوریها را با تعریف نام کاربری و رمز عبور در فایلهای htpasswd. کنترل نمود. از این قابلیت بیشتر برای ایجاد زمر عبور بر روی مدیریت یک سیستم، به جهت جلوگیری از ورود ناخواسته افزار به صفحه مدیریت استفاده میشود.
ارجاع به وبسایتهای دیگر: از دیگر قابلیتها و کاربردهای مهم فایل htaccess میتون به قابلیت ارجاع و یا ریدایرکت اشاره نمود. این قابلیت ما را مقدور میسازد تا بازدیدکنندگان صفحهای خاص و یا تمامی بخشهای وبسایت خود را به وبسایتی دیگر ارجاع دهیم. این عمل مزیتهای بسیاری از جمله ارجاع بازدیدکنندگان از وبسایت قدیمی به وبسایت جدید خود، تغییر ادرس وب سایت از HTTP به HTTPS، افزایش رتبه در SEO و … دارد.
کنترل نمایش لیست فایلهای درون یک دایرکتوری (Directory Browsing): همواره پیشنهاد میگردد از امکان نمایش محتویات درون فایلها و دایرکتوریها جلوگیری به عمل آید زیرا در صورت عدم فعال بودن این قابلیت و وجود اطلاعات مهم در دایرکتوریهای مختلف، (برای مثال وجود فایلی فشرده با پسوند .zip حاوی فایلهای مهم در یک دایرکتوری)، امکان سرقت اطلاعات موجود در آن بدون خواست شما و اطلاع قبلی وجود دارد. همچنین از آن مهمتر در صورت قابلیت نمایش محتویات درون دایرکتوریها، امکان مشاهده و جستوجو جهت یافتن فایلهای آسیبپذیر توسط هکرها نیز فراهم خواهد شد.
علاوه بر موارد فوق امکان فعالسازی قابلیتهای بسیار دیگری از قبیل تغییر فایل Index پیشفرض وبسایت یا دایرکتوری، تغییر محتویات نمایشی صفحات مربوط به خطاهای ۴۰۴،۵۰۰،۴۰۳ و …، تنظیم ساعت بر اساس TimeZoneهای مختلف، جلوگیری از دسترسی به فایلهای مختلف نظیر php.ini، حصول اطمینان از دانلود فایلهای رسانهای به جای پخش آنها و … در فایل htaccess. مقدور میباشد.
نکته مهم : لازم است همیشه یک نسخه پشتیبان از فایل htaccess. در دسترس داشته باشید . هر زمان که تغییری بر روی این فایل انجام دادید آن را ذخیره کنید و سپس به صفحه سایتتان بروید و مرورگر را رفرش کنید و مطمئن شوید که صفحهتان بهدرستی نمایش داده میشود. اگر اختلالی ایجاد شد محتوای نسخه پشتیبانتان را کپی کنید و به فایل htaccess. جاری انتقال دهید و دوباره ذخیره کنید تا وب سایتتان مانند قبل کار کند.
فایل htaccess. یکی از ابزارهای کاربردی برای سئوی تکنیکال سایت است. تاثیر این فایل در سئوی تکنیکال سایت، برای کاربران عادی قابل مشاهده نیست؛ اما اگر بدانید چطور از آن استفاده کنید، میتوانید سایتتان را بیشتر در معرض پیمایش و ایندکس شدن توسط رباتهای گوگل قرار دهید، سرعت بارگذاری صفحه را بهینه کنید و در کل، برای گوگل سیگنالهای مثبت بفرستید!
این فایل معمولاً در دایرکتوری public_htmlهاست دیده میشود. در اغلب سیستمهای مدیریت محتوا، مثل وردپرس و دروپال، فایل htaccess بهصورت خودکار ساخته میشود.
اگر کنترل پنلهاستتان Cpanel است، باید بدانید: این کنترل پنل، در حالت پیشفرض، فایلهای مخفی را نشان نمیدهد! بنابراین برای نمایش فایلهای مخفی، باید اقدامات زیر را انجام دهید:
پوشه File Manager را باز کنید. در گوشه بالا و سمت راست صفحه، روی دکمه Settings کلیک کنید تا پنجره پاپآپ مربوط به تنظیمات فایل منیجر نمایش داده شود.
سپس در پنجرهای که باز میشود، تیک گزینه Show Hidden Files را بزنید و روی Save کلیک کنید.
با اعمال این تغییر، میتوانید وارد پوشه public_html شوید و فایل htaccess را ببینید. (مثل تصویر زیر)
htaccess در سی پنل
در پوشه Home نیز سایر پوشههای مخفی نظیر Trash که فایلهای حذف شده در آن قرار دارند، قابل مشاهده هستند.
توجه: در سایر کنترل پنلهایهاست هم باید بهدنبال فایلی با نام public_html یا www بگردید. در بیشتر مواقع یک فایل .htaccess در دایرکتوری ریشه اصلی (public_html) و یک پرونده در هر زیرشاخه (/ sitename) وجود دارد.
چرا فایل .htaccess را پیدا نمیکنم؟
ببینید، در بعضی دایرکتوریها، فایلهایی که اسمشان با . (نقطه) شروع شده، مخفی میشوند؛ به عبارت دیگر، این فایلها بهصورت پیشفرض قابل مشاهده نیستند و باید یک سری تنظیمات ساده در بخش FTP Client یا File Manager انجام دهید، تا بتوانید آنها را ببینید.
این تنظیماتی که گفتم، معمولاً با زدن گزینه Show hidden files (یا عبارتهای مشابه) که در بخش Preferences،Settings، Folder Options یا View قرار دارد، انجام میشود.
دستورات قابل استفاده در htaccess
در این بخش بیش از 10 دستور کاربردی که به احتمال خیلی زیاد به آنها نیاز خواهید داشت را یادتان میدهیم؛ بعد هم میرویم سراغ دستور مرتبط با SEO.
تغییر عنوان و فرمت فایل اصلی index (سایت)
یکی از اصلیترین کاراییهای Htaccess، قابلیت تغییر عنوان و فرمت فایل اصلی سایت است! برای انجام این کار باید از کد دستوری زیر استفاده کنید:
DirectoryIndex file.php file.htm
جلوگیری از سرقت فایلها و فولدرهای درونهاست
در بیشتر اوقات، اطلاعاتی مثل فایلهای قالب اختصاصی سایت که رویهاست قرار دارند، یا فایلهایی که بهصورت فشرده (zip) درهاست خود ذخیره کردهاید، بهراحتی و فقط با مرور محتویاتهاست، توسط سایرین (معمولاً هکرها) کشف و به سرقت میروند! برای جلوگیری از این اتفاق ناگوار، کد زیر رادر انتهای فایل htaccess قرار دهید.
Options All -Indexes
محدودیت دسترسی با ipهای خاص در htaccess
در برخی مواقع، نیاز است که دسترسی یک IP یا رنج مشابهی از آنها را به سایتتان محدود کنید! چراکه ممکن است اسپمرها از یک IP مشخص، با ارسال حجم زیادی از درخواستها، باعث کاهش سرعت بالا آمدن (لود) سایتتان شوند. راه مقابله با این حرکت ناجوانمردانه، مسدود کردن این IPها است که از طریق htaccess و با اجرای کد زیر ممکن میشود.
deny from 1.2.3.4
allow from all
در دستور بالا، باید بهجای 1.2.3.4، IP یا رنج IP موردنظر را اضافه کنید.
حتما بخوانید: وب سرور چیست؟ آشنایی با انواع وبسرور، به زبان ساده!
همچنین میتوانید از این دستور، برای تامین امنیت دسترسی مدیر سایت هم استفاده کنید. مثلاً وردپرس را درنظر بگیرید. میتوانید در مسیر wp-admin یک فایل htaccess. ایجاد نموده و دسترسی کلیه IPها، غیر از IP ثابت خودتان (در نقش مدیر) را مسدود کنید. به این ترتیب، دسترسی به پنل مدیریت، تنها از سیستم شما امکانپذیر خواهد بود.
به دستور زیر توجه کنید:
deny from all
allow from 1.2.3.4
در این دستور، بهجای 1.2.3.4 – که برای نمونه نوشته شده است – باید IP دستگاه خودتان، بهعنوان مدیر سایت را وارد کنید!
افزایش امنیت فایل در htaccess (ایجاد محدودیت در دسترسی به فایل)
نیازی نیست هرکسی به هر فایلی دسترسی داشته باشد! سلب دسترسیهای غیرضروری، در محیط htaccess ممکن میشود.
این کار با کد دستوری زیر انجام میشود:
<files wp-config.php>
order allow,deny
deny from all
</files>
در این دستور، بهجای wp-config.php، باید نام فایل موردنظر را درج نمائید.
مخفی کردن لیست دایرکتوریها
یکی از رایجترین مشکلات در وبسایتهای مختلف، قابلمشاهده بودن فایلها و پوشههای موجود در آنها است! با سوءاستفاده از این ایراد، هرکسی میتواند به محتویات مختلفی که روی سایتتان آپلود میکنید دسترسی داشته باشد.
برای مثال دانلود و کپی کردن قالب سایت که اتفاقاً اختصاصی هم هست، با وجود این ایراد امکانپذیر است.
مخفی کردن لیست دایرکتوریها
برای رفع این مشکل و مخفی کردن لیست دایرکتوریها، میتوانید از دستور زیر در محیط htaccess استفاده کنید:
Options –Indexes
کش شدن سایت بر روی مرورگر با کد htaccess
مهمترین دستاورد کش شدن سایت روی مرورگر، افزایش سرعت لود شدن یا بالا آمدن است. اینکار با کاهش مصرف ترافیک، رم و CPU انجام میشود!
برای انجام این فرایند (کش کردن سایت روی مرورگر)، کد دستوری زیر را در htaccess بنویسید:
# Enables browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
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 image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
محدود کردن نوع فایلهای قابل اجرا و نمایش
یکی از مهمترین اقدامات برای تامین امنیت سایت، محدود کردن انواع فایلهایی است که در آن قابلاجرا هستند؛ یعنی هر فرمتی قابل اجرا نباشد!
این کار با htaccess و کد دستوری زیر انجام میشود:
Options +FollowSymlinks
RewriteEngine On
rewritecond %{REQUEST_FILENAME} !^(.+).css$
rewritecond %{REQUEST_FILENAME} !^(.+).js$
rewritecond %{REQUEST_FILENAME} !file.php$
RewriteRule ^(.+)$ /deny/ [nc]
اضافه کردن mime-type از طریق htaccess
میخواهید فایل را باز کنید یا آن را دانلود کنید؟!
اگر قصد دانلود دارید، برای رهایی از دست این سوال تکراری که از جانب سرور پرسیده میشود، htaccess با دستور زیر کمکتان میکند:
AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov
ایجاد محدودیت در آپلود فایل
اگر میخواهید برای حجم فایلهایی که روی سایت آپلود میشوند، محدودیت اعمال کنید، htaccess در این زمینه هم کمکتان خواهد کرد.
برای مثال، اگر میخواهید فایلهای بیشتر از 20 مگابایت روی سایت قرار نگیرند، باید از دستور زیر استفاده کنید:
php_value upload_max_filesize 20M
ایجاد محدودیت در حجم پست ارسالی
ایجاد محدودیت برای حجم پستهای ارسالی هم از طریق htaccess امکانپذیر است.
مثلاً دستور زیر حجم 2MB را بهعنوان بیشترین حجمی که یک پست میتواند داشته باشد، تعریف میکند:
php_value post_max_size 2M
تنظیم محدودیت حافظه memory_limit
با استفاده از htaceess، حتی میتوانید محدودیت حافظه را هم تعیین کنید. دستور زیر برای انجام این کار است:
php_value memory_limit 128M
تغییر صفحه پیشفرض
Htaccess حتی توانایی این را دارد که صفحه پیشفرض سایت را تغییر دهد!
با استفاده از کد زیر میتوانید مشخص کنید که کدام صفحه از سایت، پس از بالا آمدن آن، نمایش داده شود:
#Alternate default index pages
DirectoryIndex first.html index.htm index.html index.php
Hotlink Protection (جلوگیری از استفاده از تصاویر سایت در سایتهای دیگر)
این قابلیت (Hotlink Protection)، مانع از کپی شدن اطلاعات شما توسط وبسایتهای دیگر میشود!
مثلاً اگر تصویری را در یک از دایرکتوریهایهاست سایتتان آپلود کرده باشید، این قابلیت از نمایش آن در سایتهای دیگر جلوگیری میکند!
همچنین اگر لینک مستقیم دانلود فایلی را داخل سایتتان گذاشته باشید، درصورتی که این لینک، توسط سایتی دیگر کپی شود، کاربران پس از کلیک روی آن ابتدا وارد سایت شما میشوند و بعد از آن میتواند فرایند دانلود را از سر گیرند.
نکته: اجرای این قابلیت، مشروط بر آن است که mod-rewrite روی سرورتان فعال باشد. بنابراین ابتدا با مدیر سیستم خود یا شرکتی که از آن برای میزبانی خدمات میگیرید، ارتباط داشته برقرار کنید تا از این موضوع مطمئن شوید.
حتما بخوانید: آسیبپذیری امنیتی پلاگین Slider Revolution وردپرس و راهحل آن
کدهای دستوری زیر، برای جلوگیری از کپی شدن فایلها با فرمتهای GIF، JPG و CSS کاربرد دارند که باید آنها را محیط htaccess بنویسید:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC]
RewriteRule \.(gif|jpg|css)$ - [F]
نکته: ‘yourdomain.com’ با آدرس وب سایت جایگزین میشود.
مسدود کردن حملات XSS
هدف از این نوع حملات، تزریق کدهای مخرب به صفحات مختلف وبسایت است. سپس این کدها، از جانب سایت به دستگاه بازدیدکنندگان وارد میشوند.
میتوانید مقاله انواع حملات سایبری را بخوانید تا اطلاعات بیشتری در رابطه با XSS و دیگر انواع هک داشته باشید.
برای مقابله با این حملات، کد دستوری زیر را در فایل htaccess وارد کنید:
# Blocks some XSS attacks
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F,L]
</IfModule>
اعمال رمز عبور برای دایرکتوری (Password Protection)
با اعمال چند خط کد ساده در فایل htaccess. میتوان دسترسی به دایرکتوریها را با تعریف نام کاربری و رمز عبور در فایلهای htpasswd. کنترل نمود.
محتویات پیشفرض htaccess در وردپرس
همانطور که گفتیم، سایتهایی که با وردپرس ساخته میشوند، بهصورت پیشفرض از htaccess و مزایای آن بهرهمند میشوند.
این فایل پیشفرض برای وردپرس، حاوی کدهای زیر است:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
نکته: اگر فایل htaccess وجود نداشته باشد یا این کدها از آن حذف شوند، هیچکدام از صفحات داخلی سایتتان باز نخواهند شد و با کد ارور 404 مواجه خواهید شد!
حفاظت از htaccess. در برابر دسترسی غیر مجاز
همانطور که دیدید، کارهای بسیاری با کمک htaccess انجام میشوند. با توجه به این موضوع و قدرت کنترلی که این فایل بر وبسرور سایتتان دارد، مسلماً دوست ندارید افراد غیرمجاز بتوانند از آن استفاده و دستورات مختلف را در محیطش اجرا کنند.
حفظ امنیت htaccess، کار بسیار راحتی است. فقط کافی است کد زیر را در محیط آن وارد کنید:
<files ".htaccess">
order allow,deny
deny from all
</files>
خب، این هم از دستورات مختلف htacces که مطمئنم حسابی به کارتان خواهد آمد! حالا وقت چیست؟
وقت اینکه سروکار فایل htaccess را با سئو پیدا کنیم!
چگونه از .htaccess برای سئو استفاده کنیم؟
شما با اضافه کردن چند خط کد به فایل .htaccess میتوانید این کارها را انجام دهید:
آدرسها را SEO-friendly کنید
سرعت سایت را افزایش دهید
صفحۀ 404 بسازید
ریدایرکت کنید
حالا یک به یک این دستوران را توضیح میدهیم.
تغییر URLها با htaccess
یکی از ویژگیهای خوب htaccess قابلیت ایجاد تغییر در آدرسها است. شما میتوانید با کد آدرس خاصی را ریدایرکت کنید، یا اینکه یک تغییر گسترده در همۀ URLها بهوجود بیاورید.
حالا به نظرتان URLهای سازگار با سئو چه مشخصاتی دارند؟
در این URLها، از کلمات کلیدی مرتبط و بامعنی و خط تیره (-) استفاده میشود؛ کوتاه هستند و کاربران وقتی URL را میخوانند باید بدانند که صفحه درباره چه چیزی است.
???? برای مثال https://example.com/blog/introduction-to-seo-friendly-urls کاملاً با SEO سازگار است؛ ولی آدرس https://cdn03.example.com/8cb42/index.php?35872=8zh3n9vadbxgac9c&id=851368#top هیچ ویژگی مثبت ندارد!
خب؛ دقت کنید.
یکی از مشکلات رایج در خیلی از سایتها، این است که پسوندهای فایل، باعث بهم ریختن URL میشوند. البته این موضوع از دیدگاه سئوی فنی لزوماً بد نیست؛ با این حال، حذف آنها میتواند URLها را تمیز و مرتب کند و تجربه کاربری را بهبود ببخشد.
تکه کد زیر میتواند این کار را انجام دهد. مثلاً آدرس example.com/cool-page.html را به example.com/cool-page تغییر دهید (بدون پسوند شود).
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteCond %{REQUEST_URI} ^(.+)\.html$
RewriteRule (.*)\.html$ /$1 [R=301,L]
نکته: اگر پسوند فایل php بود، جای html در کد بالا، php را قرار دهید.
حالا ما 2 نوع URL داریم: ثابت (Static) و پویا (Dynamic).
آدرسهای ثابت که تکلیفشان مشخص است؛ مثلاً: iranserver.com/vps که یک بار تعریف شده و ثابت است.
آدرسهای پویا اما میتوانند تغییر کنند. مثلا inranserver.com/blog/something را ببینید. به جای something در مطالب مختلف، هر عبارتی میتواند قرار بگیرد؛ پس پویاست.
در برخی CMSهای اختصاصی، یا قدیمی، این آدرس به صورت اتوماتیک وارد میشود. مثلاً اینطوری: example.com/blog.php?id=243
این URL هر چیزی هست، به جز سازگار با سئو! اگر در سیستم مدیریت محتوایتان امکان ویرایش URL وجود نداشت، میتوانید از طریق فایل .htaccess و تکه کد زیر، آدرس را به example.com/epic-blog-post تغییر دهید:
## Redirects example.com/cool-page.html to example.com/cool-page
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteCond %{REQUEST_URI} ^(.+)\.html$
RewriteRule (.*)\.html$ /$1 [R=301,L]
برویم سراغ مورد بعدی.
بهینه کردن سرعت سایت
یکی از سادهترین راهها برای افزایش سرعت سایت، کاهش بار سرور بهواسطۀ استفاده از حافظه کش مرورگر است.
کشینگ مرورگر، برخی از منابع صفحۀ سایت شما را روی کامیپوتر بازدیدکننده دخیره میکند.
نسخۀ کپی کش شده از تصاویر یا سایر محتواهای صفحه که در کامپیوتر کاربران قرار دارند، باعث میشود که در پهنای باند و لود سرور صرفهجویی شود. چرا؟ چون وقتی که از صفحهای به صفحۀ دیگر میروند یا به صفحه قبلی برمیگردند، بخشی از محتوا قبلاً دانلود شده و دوباره دانلود نمیشود.
حتما بخوانید: خطای 503 چیست؟ چطور آن را رفع کنیم؟
برای انجام تنظیمات کشینگ مرورگر میتوانید از 2 دستور زیر استفاده کنید:
1) ExpiresByType: بر اساس نوع محتوایی که باید نگهداری شود بازه زمانی تعریف میکنید.
##### Optimize default expiration time - BEGIN <IfModule mod_expires.c>
## Enable expiration control ExpiresActive On
## CSS and JS expiration: 1 week after request
ExpiresByType text/css "now plus 1 week"
ExpiresByType application/javascript "now plus 1 week"
ExpiresByType application/x-javascript "now plus 1 week"
## Image files expiration: 1 month after request
ExpiresByType image/bmp "now plus 1 month"
ExpiresByType image/gif "now plus 1 month"
ExpiresByType image/jpeg "now plus 1 month"
ExpiresByType image/jp2 "now plus 1 month"
ExpiresByType image/pipeg "now plus 1 month"
ExpiresByType image/png "now plus 1 month"
ExpiresByType image/svg+xml "now plus 1 month"
ExpiresByType image/tiff "now plus 1 month"
ExpiresByType image/x-icon "now plus 1 month"
ExpiresByType image/ico "now plus 1 month"
ExpiresByType image/icon "now plus 1 month"
ExpiresByType text/ico "now plus 1 month"
ExpiresByType application/ico "now plus 1 month"
ExpiresByType image/vnd.wap.wbmp "now plus 1 month"
## Font files expiration: 1 week after request
ExpiresByType application/x-font-ttf "now plus 1 week"
ExpiresByType application/x-font-opentype "now plus 1 week"
ExpiresByType application/x-font-woff "now plus 1 week"
ExpiresByType font/woff2 "now plus 1 week"
ExpiresByType image/svg+xml "now plus 1 week"
## Audio files expiration: 1 month after request
ExpiresByType audio/ogg "now plus 1 month"
ExpiresByType application/ogg "now plus 1 month"
ExpiresByType audio/basic "now plus 1 month"
ExpiresByType audio/mid "now plus 1 month"
ExpiresByType audio/midi "now plus 1 month"
ExpiresByType audio/mpeg "now plus 1 month"
ExpiresByType audio/mp3 "now plus 1 month"
ExpiresByType audio/x-aiff "now plus 1 month"
ExpiresByType audio/x-mpegurl "now plus 1 month"
ExpiresByType audio/x-pn-realaudio "now plus 1 month"
ExpiresByType audio/x-wav "now plus 1 month"
## Movie files expiration: 1 month after request
ExpiresByType application/x-shockwave-flash "now plus 1 month"
ExpiresByType x-world/x-vrml "now plus 1 month"
ExpiresByType video/x-msvideo "now plus 1 month"
ExpiresByType video/mpeg "now plus 1 month"
ExpiresByType video/mp4 "now plus 1 month"
ExpiresByType video/quicktime "now plus 1 month"
ExpiresByType video/x-la-asf "now plus 1 month"
ExpiresByType video/x-ms-asf "now plus 1 month"
</IfModule>
##### Optimize default expiration time - END
2) Cache-Control: با استفاده از دستور Header به مرورگر میگویید که چه تعداد فایل (از نوع ثابت یا استاتیک) را در هز ماه نگهداری کند.
##### 1 Month for most static resources
<filesMatch ".(css|jpg|jpeg|png|gif|js|ico)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
مورد بعدی که تاثیر چشمگیری در افزایش سرعت سایت دارد، فشرده کردن یک سری از فایلها است.
این کار با فعال کردن Gzip بهسادگی قابل انجام است.
##### Enable gzip compression for resources
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
ریدایرکت در htaccess
یکی از مهمترین و البته پراستفادهترین قابلیتهای فایل htaccess، امکان ریدایرکت کردن صفحات به یکدیگر است.
با کمک این قابلیت میتوانید، سایت یا لینکهای مختلف را به آدرسهای دیگری هدایت کنید.
همچنین میتوانید مشخص کنید که آدرس سایت با http به https هدایت شود. یا کاربری که آدرس سایت را با WWW نوشته است، به آدرس اصلی سایت که بدون WWW است، برسد!
مثلاً برای هدایت کاربر از آدرس با http به به آدرس با https، باید از کد زیر استفاده کنید:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
با خواندن مقاله مثالهای کاربردی ریدایرکت در htaccess اطلاعات بیشتری در این زمینه کسب خواهید کرد.
ایجاد صفحات پیشفرض خطای 404
گاهی اوقات ممکن است صفحهای به هر دلیل حذف یا از دسترس خارج شود. در این حالت ممکن است که کاربر از طریق کلیک کردن روی لینک، وارد این صفحه شود.
در صورتی که هیچ پیغامی برای کاربر نگذاشته باشید و او را همینطوری سرگردان رها کنید، تجربه کاربری بدی برای او رقم میخورد که کاملاً اثر منفی روی سئو دارد.
برای جلوگیری از این ضرر بهتر است که از نمایش صفحهای با نماش خطای 404 (یکی از خطاهای HTTP) و دادن پیغام مرتبط استفاده کنید.
چطوری؟
با افزودن تکه کد زیر، در فایل .htaccess
ErrorDocument 401 /error_pages/401.html
ErrorDocument 404 /error_pages/404.html
ErrorDocument 500 /error_pages/500.html
حالا میتوانید با توجه به هویت برند و نوع مخاطبانتان، مشکل را طوری به آنها توضیح دهید که بهبهترین شکل آن را درک کنند. دستور زیر برای تعریف این صفحات اختصاصی است:
نکات پایانی و معرفی سایت جهت ساخت htaccess
در مقاله امروز دیدید که فایل htacces چه قابلیتهای زیادی دارد و چگونه میشود بخشهای مختلف یک سایت را به کمک آن مدیریت یا بهینه کرد. جالب اینجاست که قابلیتهای این فایل به همینجا ختم نمیشود.بلوبات
شما با مراجعه به سایت htaccesseditor.com میتوانید کدهای مختلفی بسازید و آنها در فایل ataccess جایگذاری کنید. فقط یادتان نرود که از قسمت سمت راست و بالای صفحه، زبان آن را انگلیسی کنید.
در صورتی که سوالی دارید یا جایی را خوب متوجه نشدید، برای ما کامنت بگذارید تا بیشتر راهنماییتان کنیم.
با استفاده از فایلهای htaccess شما میتوانید بسیاری از جنبههای آپاچی (و انواع مختلف آن) را کنترل کنید. در این مقاله قصد داریم به سوال اچ تی اکسس چیست و چه کاربردی دارد بپردازیم. در ادامه همراه ما باشید تا هر آنچه که باید در مورد راه اندازی صفحات خطا (set up special error pages)، حفاظت از رمز عبور (password protect directories)، redirect و…بدانید.
نحوه استفاده از راهنما
این راهنما به عنوان یک منبع جامع برای استفاده کردن از .htaccess تهیه شده است. اگر شما در این موضوع تازهکار هستید شاید بهتر باشد از فصل اول شروع کنید – در زیر اصول پایهای .htaccess را مشاهده میکنید. .htaccess Basics بیایید قبل از اینکه به دستورات بپردازیم با برخی از اصول .htaccess آشنا شویم.
.htaccess چیست؟
فایل htaccess، پوشهی پیکربندی است که نحوه پاسخگویی وبسرور به درخواستهای مختلف را کنترل میکند و توسط چندین وبسرور پشتیبانی میشود، از جمله وبسرور معروف آپاچی که به وسیله اکثر ارائه دهندگان وبهاستینگ تجاری استفاده میشود. فایلهای htaccess در سطح یک دایرکتوری عمل میکنند، که به آنها امکان میدهد تنظیمات پیکربندی و کانفیگوریشن جهانی دایرکتیوها و دستورالعملهای .htaccess بالاتر در درخت دایرکتوری را نادیده بگیرند.
برخی از کاربردهای رایج .htaccess شامل؛ هدایت URLها،امکان پذیر کردن محافظت از رمز عبور برای وبسایتها ( یا صفحات وبسایت)، نمایش صفحات خطای سفارشی ( مانند صفحه 404) و افزایش سئو از طریق سیاست trailing slash میباشند. در مورد اخیر مدیر وب ممکن است انتخاب کند که در انتهای هر URL در یک سایت به یک trailing slash احتیاج باشد یا نه.
علت نام گذاری .htaccess چیست؟
.htaccess، مخفف hypertext access میباشد. این نام گرفته شده از کاربرد اصلی این ابزار، کنترل دسترسی کاربر به برخی از فایلها بر اساس هر دایرکتوری،میباشد.
با استفاده از زیرمجموعه دایرکتیوهای تنظیمات آپاچی،.htaccess به یک ادمین سیستم اجازه داده است تا دسترسی به دایرکتوریهای جداگانه را با استفاده از نام کاربری و رمز عبور مشخص شده در یک فایل .htpasswd برای کاربران محدود کند.
در حالی که فایلهای htaccess هنوز برای این مورد استفاده میشوند، آنها همچنین برای موارد دیگری نیز استفاده میشوند که در این راهنما توضیح خواهیم داد.
فایل htaccess کجا قرار دارد؟
از لحاظ تئوری، هر پوشه (دایرکتوری) در سرور شما میتواند یک نمونه داشته باشد.
به طور کلی یک مورد در root folder وب شما وجود دارد. این پوشهای است که تمام محتویات وبسایت شما را دربر گرفته است و معمولا با برچسب و نام public_html یا www. نشان داده میشود. اگر یک دایرکتوری منفرد دارید که شامل چندین ساب دایرکتوری وبسایت است، ممولا یک فایل اچ تی اکسس در دایرکتوری ریشه اصلی (public_html) پیدا خواهید کرد. و همچنین یک عدد نیز در هر ساب دایرکتوری (/sitename) وجود دارد.
چرا نمیتوانم فایل htaccess خود را پیدا کنم؟
در بیشتر سیستمهای فایلی، فایلهایی که نام آنها با نقطه (.) شروع میشود، مخفی هستند. این بدان معنی است که معمولا قابل مشاهده نیستند.
ولی دسترسی به آنها سخت نیست. سرویس گیرنده FTP یا File Manager شما باید تنظیماتی برای نمایش فایلهای پنهان داشته باشد. این تنضیمات در برنامههای مختلف در مکانهای متفاوتی قرار دارند، اما به طور معمول در “Preferences”،”Settings” یا در “Folder Options” قرار گرفته است. گاهی ممکن است آن را در منو “View” پیدا کنید.
اگر فایل اچ تی اکسس نداشته باشم چه پیش میآید؟
اول از همه، از روشن بودن گزینه “Show Hidden Files” یا معادل آن مطمئن شوید. تا در صورت داشتن یکی از فایلهای اکسس پنهان مطلع شوید. اغلب فایلهای htaccess به طور خودکار ایجاد میشوند، بنابراین معمولا یک فایل وجود دارد. اما همیشه اینگونه نیست.
اگر هیچ فایلی وجود نداشته باشد، به راحتی میتوانید ایجاد کنید.
➢ یک فایل جدید را در plain text editor شروع کنید.
➢ آن را با فرمت ASCII (نه UTF-8 یا هر چیز دیگر) به عنوان .htaccess ذخیره کنید.
➢ مطمئن شوید که htaccess.txt یا مواردی از این قبیل نباشد. فایل باید فقط یک نام داشته باشد، .htaccess، بدون هیج پسوند فایل اضافی.
➢ آن را از طریق FTP یا File Manager مبتنی بر مرورگر خود در دایرکتوری مناسب آپلود کنید.
مدیریت خطا
استفاده از فایلهای اچ تی اکسس برای مشخص کردن ارور داکیومنتها بسیار ساده است. در واقع یکی از سادهترین کارهایی است که میتوان با استفاده از آنها انجام داد.
کد خطا یا error code چیست؟
هرگاه درخواستی به وبسرور داده شود، وب سرور در تلاش است تا به این درخواستها پاسخ دهد. گاهی از طریق ارسال داکیومنت (درموارد صفحات HTML) و یا از طریق دسترسی پیدا کردن به یک برنامه و برگرداندن اطلاعات خروجی( در موارد سیستمهای مدیریت محتوا و سایر برنامههای وب).
اگر در این میان مشکلی پیش بیاید، خطا یا اروری ایجاد میشود. انواع مختلفی از پیامهای خطا، ارور کدهای متفاوتی دارند. احتمالا با ارور 404 آشنا هستید، که هنگام یافت نشدن فایل رخ میدهد.
ارور کدهای زیادی وجود دارند که سرورها به کمک آنها میتوانند پاسخ دهند.
Client Request Errors
➢ 400 — Bad Request
➢ 401 — Authorization Required
➢ 402 — Payment Required (not used yet)
➢ 403 — Forbidden
➢ 404 — Not Found
➢ 405 — Method Not Allowed
➢ 406 — Not Acceptable (encoding)
➢ 407 — Proxy Authentication Required
➢ 408 — Request Timed Out
➢ 409 — Conflicting Request
➢ 410 — Gone
➢ 411 — Content Length Required
➢ 412 — Precondition Failed
➢ 413 — Request Entity Too Long
➢ 414 — Request URI Too Long
➢ 415 — Unsupported Media Type.
Server Errors
➢ 500 — Internal Server Error
➢ 501 — Not Implemented
➢ 502 — Bad Gateway
➢ 503 — Service Unavailable
➢ 504 — Gateway Timeout
➢ 505 — HTTP Version Not Supported.
رسیدگی پیشفرض خطا
اگر هیچگونه مدیریت خطایی را مشخص نکنید، سرور پیام را به مرورگر باز میگرداند و مرورگر یک پیام خطای عمومی به کاربر نشان میدهد. به طور معمول این شرایط ایدهآل نمیباشد.
مشخص کردن داکیومنت خطا
برای هر ارور کد که میخواهید مدیریت کنید یک داکیومنت HTML بسازید. نام این داکیومنتها را میتوانید هر چیزی بگذارید. سعی کنید اسمهایی که انتخاب میکنید برای شما یادآور هدف این داکیومنتها باشد، مانند 404 html یا not-found.html
سپس در فایل htaccess انتخاب کنید که کدام داکیومنت و فایل با کدام ارور استفاده شود.
ErrorDocument 400 /errors/bad-request.html
ErrorDocument 401 /errors/auth-reqd.html
ErrorDocument 403 /errors/forbid.html
ErrorDocument 404 /errors/not-found.html
ErrorDocument 500 /errors/server-err.html
خطای 404 از آن دست ارورهایی است که میتواند به میزان قابل توجهی سایت شما را با کاهش کاربر مواجه کند. بدین منظور به شما پیشنهاد میکنیم برای رع این مشکل به مقالهی ما با عنوان رفع خطای 404 در وردپرس سری بزنید.)
گزینههای جایگزین .htaccess در مدیریت خطا
بسیاری از سیستمهای تولید محتوا مانند WordPress و Drupal و بسیاری از اپلیکیشنهای وب، روشهای خود را برای مدیریت کردن ارور کدها دارند.
محافظت از رمز عبور با .htaccess
هدف اصلی فایلهای htaccess محدود کردن دسترسی به برخی از دایرکتوریها به ازای هر کاربر بود ( از این رو آن را hypertext access نامیدند). پس اول به این وظیفه میپردازیم.
.htapasswd
نامهای کاربری (username) و رمزهای عبور (password) برای سیستمهای .htacccess در یک فایل به نام .htpasswd ذخیره میشوند.
هریک از آنها به صورت زیر و در یک خط ذخیره میشوند.
username:encryptedpassword
برای مثال:
johnsmith:F418zSM0k6tGI
مهم است که بدانید، پسورد ذخیره شده در فایل همان رمز عبور اصلی مورد استفاده برای ورود به سیستم نمیباشد، بلکه یک cryptographic hash از پسورد میباشد.
این بدان معناست که رمز عبور با الگوریتم رمزگذاری اجرا شده و در نتیجه ذخیره شده است. هنگامی که کاربر به سیستم وارد میشود رمز عبور کامل وارد شده و از همان الگوریتم عبور میکند. اگر ورود یکسان باشد، پسوردها مطابقت داشته و به کاربر اجازه دسترسی داده میشود.
ذخیره سازی رمزهای عبور از این طریق، آنها را امنتر میسازد. اگر کسی به فایل .htpasswd دسترسی پیدا کند، فقط پسورد هش شده و در هم آمیخته را میبیند، نه اصلی را. و هیچ راهی برای بازسازی نسخههای اصلی از درهم آمیخته وجود ندارد. این یک رمزگذاری یک طرفه میباشد.
از الگوریتمهای هشینگ مختلفی میتوان استفاده کرد.
الگوریتمهای امن
از یکی از موارد زیر استفاده کنید.
➢ bcrypt- این امنترین روش الگوریتمی میباشد ولی همچنین کندترین نیز هست. توسط Nginx و آپاچی پشتیبانی میشود.
➢ md5 – این الگوریتمی است که به طور معمول توسط نسخههای فعلی آپاچی استفاده میشود. توسط Nginx پشتیبانی نمیشود.
الگوریتمهای ناامن
از این موارد استفاده نکنید.
➢ crypt() – از این الگوریتم پیشتر استفاده میشد. ولی امن نمیباشد.
➢ SHA و Salted SHA
ایجاد نامهای کاربری و رمزهای عبور در خط فرمانCommand Line
شما میتوانید یک فایل htaccess را ایجاد کرده و به آن مستقیما از خط فرمان یا ترمینال SSH پسورد و نام کاربری جفت شده را اضافه کنید.
فرمان و کمند رسیدگی به فایل .htpasswd به طور ساده htpasswd است.
برای ایجاد یک فایل .htpasswd جدید، از کمند و گزینه -c استفاده کنید. سپس مسیر(path) به دایرکتوری را تایپ کرده (نه URL،بلکه مسیر واقعی در سرور). همچنین میتوانید کاربری را که میخواهید اضافه کنید را در آن قرار دهید.
> htpasswd -c /usr/local/etc/.htpasswd johnsmith
این کار یک فایل .htpasswd جدید در دایرکتوری (/etc) ایجاد میکند، و نیز سابقهای برای کاربر johnsmith ثبت میکند. از شما رمز عبور خواسته خواهد شد، که آن نیز با استفاده از رمزگذاری md5 (md5 encryption) ذخیره شده است.
اگر در مکان مشخص شده، فایل .htpasswd از قبل وجود داشته باشد، فایل جدیدی ایجاد نخواهد شد و کاربر جدید به فایل موجود از قبل اضافه میشود.
اگر شما الگوریتم هشینگ bcrypt را ترجیح دهید، از گزینه -b باید استفاده کنید.
در هم سازی و هش کردن رمز عبور بدون خط فرمان اگر با استفاده کردن از خط فرمان یا ترمینال SSH احساس راحتی نمیکنید یا به هر دلیلی به آن دسترسی ندارید، میتوانید فایل .htpasswd را به راحتی ایجاد کرده و به وسیله یک plain text editor آن را پر کنید و سپس از طریق FTP یا File Manager آپلود کنید. اما پس از آن به دلیل اینکه کمند .htpasswd به پسوردها رسیدگی میکرد باید آنها را به نوع دیگری رمزگذاری کنید.
بسیاری از ابزارهای رمزگذاری به صورت آنلاین موجود میباشند. که احتمالا htpasswd generator در Aspirine.org بهترین گزینه میباشد. این روش گزینههای مختلفی برای ااگوریتمهای درهم سازی، هشینگ و تقویت پسورد به شما میدهد. و به راحتی میتوانید اطلاعات خروجی آن را در فایل .htpasswd خود کپی و پیست کنید.
فایل .htpasswd خود را کجا نگهداری کنید؟
نیازی به داشتن فایل .htpasswd جداگانه برای هر فایل htaccess نیست. در واقع، نباید داشته باشید. در شرایط عادی فقط باید یک فایل برای کل حساب وبهاستینگ یا سرور دایرکتوری اصلی داشته باشید.
فایل .htpasswd نباید در دایرکتوری باشد که دسترسی عموم به آن آزاد است ( نباید در public_html،www. و یا هر ساب دایرکتوری دیگر یاشد). آن باید در پوشهای باشد که فقط برای خود سرور قابل دسترسی باشد.
چگونه .htpasswd را با .htaccess استفاده کنیم؟
هر دایرکتوری میتواند فایل htaccess مخصوص خود را به همراه مجموعه کاربران خاص خود که مجاز به دسترسی به آن هستند را داشته باشد.
اگر میخواهید هر کسی ( از جمله کاربران غیر ورودی به سیستم) به دایرکتوری و فایلهای آن دسترسی داشته باشند، نیاز به انجام کاری ندارید. چرا که به طور پیش فرض اینگونه میباشد.
برای محدودسازی دسترسی، موارد زیر را به فایل htaccess اضافه کنید:
AuthUserFile /usr/local/etc/.htpasswd
AuthName “Name of Secure Area”
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>
خط اول مسیر و نام فایل را برای لیست نام کاربری و رومزعبور تعیین میکند. خط دوم نامی برای منطقه امن مشخص میکند. خط سوم احراز هویت پایه (basic authentication) را مشخص میکند، چیزی که معمولا به آن نیاز دارید.
تگ <Limit> مشخص میکند که چه چیزی محدود شده است ( در اینجا قابلیت GET یا POST به هر فایل در دایرکتوری). در بین جفت تگ <Limit> لیستی وجود دارد که در آن مشخص است چه کسی میتواند به فایلها دسترسی یابد.
در مثالهای فوق، هر کاربر معتبری میتواند به فایلها دسترسی پیدا کند. اگر میخواهید دسترسی را به یک کاربر خاص یا تعداد کمی از کاربران محدود کنید، میتوانید آنها را نامگذاری کنید.
AuthUserFile /usr/local/etc/.htpasswd
AuthName “Name of Secure Area”
AuthType Basic
<Limit GET POST>
require user johnsmith
require user janedoe
</Limit>
همچنین میتوانید کاربران را در گروههایی قرار داده و اجازه دسترسی مبتنی بر گروه را به آنها بدهید. این کار با اضافه کردن فایل دیگری که گروهها را مشخص میکند انجام میشود.
فایل گروه، که میتواند برای مثال به نام .htgroups باشد مانند زیر است:
admin: johnsmith janedoe
staff: jackdoe cindysmith
سپس میتوانید آن را در فایل htaccess خود مشخص کنید:
AuthUserFile /usr/local/etc/.htpasswd
AuthGroupFile /usr/local/etc/.htgroup
AuthName “Admin Area”
AuthType Basic
<Limit GET POST>
require group admin
</Limit>
گزینههای جایگزین برای .htpasswd
استفاده از .htaccess و .htpasswd برای محدودسازی دسترسی به یک سری فایلهای خاص بر روی سرور خود فقط زمانی منطقی است که تعداد زیادی فایل استاتیک داشته باشید. این ویژگی زمانی توسعه یافت که، وبسایتها مجموعهای از داکیومنتهای HTML و منابع مرتبط بودند.
اگر از سیستم مدیریت محتوا (CMS) مانند؛ WordPress یا Drupal استفاده میکنید، میتوانید از ویژگیهای مدیریت کاربر داخلی برای محدود کردن یا اعطای دسترسی به محتوا استفاده کنید.
چرا از .htaccess به جای گزینههای دیگر استفاده میکنیم؟
میتوانید در فایلهای PHP ریدایرکت یا هر نوع server-side scripting دیگر نصب کنید. همچنین میتوانید آن را در سیستم مدیریت محتوا خود نیز نصب کنید. استفاده از .htaccess معمولا سریعترین نوع ریدایرکت میباشد. با ریدایرکتهای مبتنی بر PHP یا سایر زبانهای server-side scripting، درخواست باید تکمیل شود. و اسکریپت تفسیر شده ما قبل پیام ریدایرکت به مرورگر ارسال میشود.
همراه ریدایرکتهای .htaccess، سرور به طور مستقیم به همراه پیام ریدایرکت به درخواست پاسخ میدهد. این روش خیلی سریعتر است. هرچند باید توجه داشته باشید که برخی از سیستمهای مدیریت محتوا، در واقع با به روز رسانی برنامهریزی شده .htaccess ریدایرکتها مدیریت میکنند. برای مثال؛ وردپرس پلاگینهای ریدایرکتی دارد که به روش گفته شده عمل میکند (همچنین سیستم URL در WPنیز اینگونه است).این به شما عملکرد مستقیم از .htaccess را میدهد، و در عین حال مدیریت راحت را از درون اپلیکیشن فراهم میکند.
پیشنهاد مطالعه: اگر میخواهید با ریدایرکتها و تاثیر هرکدام در رنک گوگول و سئو آشنا شوید، حتما مقالهی ریدایرکت 301 چیست را مطالعه نمایید. ما ر این مثقاله به تفصیل توضیح دادیم که ریدایرکت 301 چه تفاوتی با ریدایرکت 302 دارد.
پنهان کردن فایل htaccess: ملاحظات امنیتی
هیچ دلیلی برای اینکه کسی بتواند فایل htaccess شما را در وب مشاهده کند، وجود ندارد. علاوه بر این، دلایل زیادی وجود دارند که شما قطعا نباید بخواهید عموم، فایل.htaccess شما را ببینند. بزرگترین مسئله این است که، اگر از یک فایل .htpasswd استفاده میکنید، محل آن در فایل.htaccess مشخص شده است. دانستن این که کجا میتوان آن را پیدا کرد، یافتن آن را آسانتر میکند.
علاوه بر این، به عنوان یک قانون کلی،نباید جزئیات مربوط به عملکرد و برنامههای خود را در اختیار دیگران قرار دهید. در قوانین rewrite، تنظیمات دایرکتوری، امنیت – تمام موردهایی که از .htaccess برای آنها استفاده میشود- یک روش امنیتی مناسب آن است که که، همه این پشت صحنهها را در وب سرور خود پنهان کنید. هر چقدر یک هکر در مورد سیستم شما بیشتر اطلاعات کسب کند، سیستم همان قدر به خطر میافتد.
به راحتی میشود فایل.htaccess را از دید عموم پنهان کرد. ققط کافیست کد زیر را اضافه کنید:
<Files .htaccess>
order allow,deny
deny from all
</Files>
چه موقع نباید از .htaccess استفاده کنید؟
ادیت کردن فایل htaccess برای اولین بار میتواند اساس قدرت فوقالعادهای را به طور ناگهانی در برابر محیط وبهاستینگ به شما بدهد. شما ناگهان خود را مانند یک مدیر سیستم و sysadmin احساس میکنید.
متاسفانه این قدرت ممکن است به ذهن شما نفوذ کند و شما شروع به استفاده کردن از فایل htaccess در موقعیتهایی کنید که مناسب نیستند.
وقتی لازم است کاری انجام دهید که به نظر میآید از کارهای .htaccess باشد، دو موقعییت وجود دارد که باید دستورالعملها و دایرکتیوها را در جای دیگر به کار بگیرید.
آپ استریم بیشتر
در صورت امکان، بهتر است دستورالعملهایی که میخواهید، در فایل htaccess قرار دهید. که یک فایل تنظیمات پیکربندی برای کل سرور میباشد. به همین ترتیب، تنظیمات PHP مناسب فایل php.ini هستند و اکثر زبانهای دیگر نیز دارای تنظیمات پیکربندی مشابه میباشند. قرار دادن دایرکتیوهای بیشتر آپ استریم در httpd.conf،php.ini و یا فایل پیکربندی زبانهای خاص دیگر، اجازه میدهد تا این تنظیمات در موتور تجزیه وب جا بیافتند. همراه .htaccess دایرکتیوها باید با هر درخواست بررسی و تسفیر شوند.
اگر شما سایت کم ترافیکی با تعداد اندکی دایرکتیو .htaccess دارید، این مسئله بزرگی نیست. اما اگر با ترافیک بالا با دایرکتیوهای زیاد مواجه هستید، تاخیر در عملکرد میتواند تاثیرگذار باشد. متاسفانه بسیاری از ارائه دهندگانهاستینگ اشتراکی به مشتریان اجازه دسترسی به فایلهای http.conf یا php.ini را نمیدهند و کاربران را مجبور به اتکا به فایل کندتر .htaccess میکنند.
این یک مجازات مضاغف را در مقایسه با پیکربندی و کانفیگوریشن VPS سفارشی فراهم میکند زیراهاستینگ اشتراکی نیز قدرت کمی دارد و کم مصرف است. این یکی از دلایلی است که سایتی با ترافیک بالا و تاثیرگذار باید به جای برنامه میزبانی اشتراکی در VPS باشد.
دان استریم بیشتر
اگر ار مدیریت محتوای خوبی مانند؛ WordPress یا Drupal استفاده میکنید، برخی از کارهایی که ممکن است در یک فایل htaccess انجام دهید( مانند ریدایرکت URLها یا بلاک کردن آدرسهای IP) از داخل برنامه قابل انجام هستند. این کار اغلب با فایل htaccess همراه است و اپلیکیشن به صورت برنامه ریزی شده دایرکتیو و دستورالعملهایی را اضافه میکند.
وقتی این مورد در دسترس است، بهتر است این وظایف در داخل اپلیکیشن انجام شوند تا اینکه خودتان فایل htaccess را ادیت کنید. اگر از یک پلاگین تست شده و باز استفاده کنید،احتمال اینکه باگها و دایرکتیوهای ناسازگار و متناقض را دریابید و معرفی کنید کم است.
عیب یابی
سرگرم شدن با فایل htaccess میتواند عالی باشد، اما همچنین میتواند باعث توقف کار سرور شما شده و آن شروع به تحویل دادن 500 ارور داخلی سرور کند. در اینجا چند پیشنهاد برای کمک به شما در این زمینه آورده شده است.
انجام دادن یک کار در زمان
لازم به ذکر نیست اما متاسفانه این درسی است که بسیاری از ما باید بارها و بارها آن را یاد بگیریم. یک کار را انجام دهید. آن را تست کنید. سپس کار دیگر را انجام دهید. آن را نیز تست کنید. اگر چندین کار را همزمان انجام دهید، و سپس به مشکل برخورد کنید، نخواهید دانست کدام دارکتیو مقصر است.
قبل از هر اغدام از فایل خود بکآپ تهیه کنید
به دنبال انجام فقط یک کار در زمان، شما باید فایل خود را بین هر اغدام ذخیره کنید. آرشیو ذخیره شما باید قابل بازیابی باشد. این Microsoft Word نیست که بتوانید راحت Undo کنید، شما یک کپی ذخیره شده از فایل خود نیاز دارید.همیشه، همیشه و همیشه توانایی بازیابی یک نسخه فعال را داشته باشید. اگر نوعی سیستم مدیریت منبع مانند git داشته باشید، این سادهترین حالت است. شما میتوانید هر تغییری را ایجاد کرده و در صورت بروز اشکال به عقب برگردید.
گزارشهای خطا را بررسی کنید
اگر به مشکل برخورد کردید و در پیدا کردن دلیل آن دشوار میباشد، گزارشهای خطا آپاچی خود را برسی کنید. اغلب در آنها اطلاعات ارزشمندی در مورد مکان جستجو برای یافتن اشکال ارائه میدهند.
از تالارهای گفتتمان توسعه دهندگان کمک بگیرید
تالارهای گفتمان و پرسش و پاسخ مانند StackOverflow حتی برای با تجربهترین توسعه دهندگان و sysadminها ابزارهای بینظیری هستند. البته Google را نیز فراموش نکنید. اغلب تفاوت بین یک مستر وب بد و یک مستر وب خوب در داستن پاسخ نیست بلکه، در دانستن مکان پیدا کردن پاسخ است.
مشکلات متداول .htaccess
گاهی ممکن است اشتباه تایپی داشته باشید. گاهی نیز ممکن است با اشکالات مبهم و گیج کننده روبرو شوید که ناشی از تلاقی عوامل غیرقابل پیشبینی میباشند.
بیشتر اشکالات ناامید کننده، موجود در مرکز میباشند. اشکلات ساده و روزمره که برای حل آنها فقط کافیست در مورد مکان وقئع آنها اطلاعات داشته باشید.
نامگذاری نامناسب فایل
فقط یک روش برای هجی کردن .htaccess وجود دارد. باید با نقطه شروع شود و با حروف کوچک تایپ شود.
شاید احمقانه به نظر بیاید ولی اگر فایل htaccess شما عملکرد مورد نظر را نداشته باشد اول از همه باید نامگذازی آن چک شود.
.htaccess به طور کامل یا تا حدی غیرفعال میباشد
برخی ارائه دهندگانهاستینگ اشتراکی .htaccess را به طور کامل غیرفعال میکنند. برخی دیگر فقط استفاده از بعضی دایرکتوریها را محدود میسازند. به همین ترتیب، در برنامههای VPS یا سرورهای اختصاصی شما، .htaccess ممکن است غیرفعال باشد.
اگر به فایل httpd.conf یا تنظیمات دیگر سرور دسترسی دارید، میتوانید خودتان آن را بررسی کنید. اگر دایرکتیو AllowOverride None را پیدا کنید، عامل را پیدا کردهاید. آن را به AllowOverride All تغییر دهید.
اگر به فایل httpd.conf دسترسی ندارید( برای مثال ازهاستینگ اشتراکی استفاده میکنید) میتوانید با پشتیبانی فنی شرکتهاستینگ تماس گرفته و تقاضا به فعال شدن فایل کنید. همچنین ممکن است آنها روشهای دیگری را پیشنهاد دهند.
دستورالعملهای متناقض یا نادیده گرفته شده
اگر دارای چندین دایرکتوری تودرتو هستید. امکان اینکه هر کدام فایل htaccess خود را داشته باشند وجود دارد.
هر فایل htaccess از روت، از طریق هر دایرکتوری تودرتو، اعمال میشود و آنها به ترتیب خوانده میشوند، به سمت پایین درخت دایرکتوری. اگر چیزی را در روت دایرکتوری قرار دهید و سپس چیزی در سابدایرکتوری آن را باطل کند.دایرکتیو موجود در فایل htaccess نزدیک به درخواست برتری دارد.
سوالات متداول در مورد .htaccess
➢ فایل htaccess در سئو چیست؟
از فایل htaccess میتوان برای اجرای وظایف مرتبط با سئو مانند ریدایرکتها استفاده کرد و به search engine crawler اجازه داد بدانند کدام صفحات را باید فهرست بندی کنند. شما همچنین میتوانید هدرهای HTTP را تنظیم کنید تا سرعت بارگذاری صفحه را بهبود ببخشند و رتبه بندی موتور جستجوگر شما افزایش یابد.
علاوه بر این شما میتوانید از .htaccess برای تصویب یک سیاست trailing slash ثابت استفاده کنید. این همراه با قوانین www و HTTP میتواند به شما کمک کند از محتوای تکراری که توسط Google مجازات میشود جلوگیری کنید.
➢ چگونه فایل htaccess در وردپرس ایجاد کنیم؟
برای ایجاد فایل htaccess در وردپرس این کد را استفاده کنید:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
توجه داشته باشید که در پی نصب وردپرس، فایل htaccess به صورت خودکار ایجاد میشود. با این حال پلاگین معیوب میتواند فایل را خراب کرده و در نتیجه نیاز به ایجاد یک فایل htaccess جدید پیدا کنید.
➢ چرا نمیتوانم فایل htaccess خود را ببینم؟
اگر نمیتوانید فایل htaccess خود را ببینید، ممکن است فایل پنهان شده یا اصلا وجود نداشته باشد. برای مجبور کردن کلاینت FTP به نشان دادن فایلهای پنهان باید تنظیمات کلاینت را تغییر دهید.
( در FileZilla،ServeràForce Showing Hidden Files)
اگر بعد از انجام این تغییرات همچنان فایلی مشاهده نشد باید یک فایل جدید بسازید.
➢ چند عدد فایل htaccess باید داشته باشیم؟
خیلی از وب سایتها فقط به یک فایل نیاز دارند. به این دلیل که، فایل htaccess به شما امکان میدهد تغییرات پیکربندی سرور را بر اساس هر دایرکتوری اعمال کنید. با این حال، هنگام میزبانی چندین سایت یا اپلیکیشنهای پیچیده، برخی از مدیران وب ممکن است برای ارائه دادن عملکردهای پیشرفته از فایلهای بیشتری استفاده کنند.
➢ .htaccess در cPanel کجا قرار گرفته است؟
برای مشاهده فایل htaccess به حساب cPanel خود وارد شوید. سپس به FileàFile Manager بروید. وقتی از شما درخواست شد تا دایرکتوری مدنظر را انتخاب کنید، webRoot را انتخاب کرده و مطمئن شوید که گزینه Show Hidden Files چک خورده باشد. اکنون شما میتوانید فایل htaccess در cPanel را مشاهده کنید.
➢ از فایل htaccess در Codelgniter برای چه استفاده میشود؟
از فایلهای htaccess میتوان به همراه Codelgniter برای ایجاد URLهای دوستانه موتور جستجوگر استفاده کرد. به طور پیش فرض، URLهای Codelgniter شامل فایلهای index.php هستند. با استفاده از .htaccess میتوانید فایل پیشفرض index.php را حذف کرده تا در همه URLهای اپلیکیشن شما نشان داده نشود.
.htaccess یک فایل متنی مخفی (Hidden) است که به شما امکان مدیریت نحوهی دسترسی بازدیدکنندگان به وبسایتتان را میدهد. برای بررسی برخی از کاربردهای رایج فایل .htaccess میتوانید به این صفحه مراجعه و مقالهها را مطالعه نمایید و یا حتی عبارت htaccess را در فیلد مربوط به جستوجوی مقالهها در این صفحه Search کنید.
مسیر فایل .htaccess در cPanel کجاست؟
به صورت پیشفرض، فایل .htaccess در مسیر زیر واقع شده است:
/home/username/public_html/.htaccess
با استفاده از نرمافزار و دسترسی FTP میتوانید آن را یافته و ویرایش نمایید اما در صورت تمایل میتوانید این کار را از طریق دسترسی مستقیم به پنل cPanel انجام دهید:
1- وارد پنل cPanel شده و در بخش Files، بر روی File Manager کلیک کنید.
2- به پوشهی Public_html مراجعه نمایید و در این مسیر فایل .htaccess را بیابید.
چنانچه این فایل را مشاهده نمیکنید، میبایست نمایش فایلهای پنهان را فعال کنید. جهت انجام این کار بر روی دکمهی Settings در بالا سمت راست صفحه کلیک کرده و تیک گزینهی «(Show Hidden Files (dotfiles» را بزنید و سپس بر روی Save کلیک کنید.
3- حال فایل .htaccess را در این مسیر یافته و جهت ویرایش آن بر رویش کلیک سمت راست نموده و گزینهی Edit را انتخاب نمایید.
در صورتی که فایل .htaccess در این مسیر وجود نداشت، جهت ایجاد آن بر روی دکمهی +File واقع در بالا سمت چپ صفحه کلیک کنید. در فیلد اول یعنی New File Name، عبارت .htaccess وارد نمایید و در فیلد دوم عبارت «/public_html» و یا مسیر وبسایت خود را وارد کنید. در انتها بر روی Create New File کلیک نمایید.
htaccess زبان ارتباطی سایت با وب سرور میباشد و یادگیری آن یک ضرورت غیرقابل انکار است. با استفاده از این فایل، شما میتوانید برای سرور سایت خود قوانین تعیین کنید و تمام فایلها و دایرکتوریهای سایت را کنترل کنید.برای بدست آوردن اطلاعات بیشتر درباره این فایل مقاله «htaccess چیست» منبع مناسبی میباشد.
htaccess به طور پیش فرض و مخفیانه در فایل public_html درهاست قرار دارد.برای راهنمایی درباره خارج کردن این فایل از حالت مخفی مقاله «نمایش فایل مخفی درهاست» راهنمای شما خواهد بود
قبل از انجام هرگونه تغییرات، یک نسخه بکاپ از آن تهیه کنید . هم چنین لازم است تغییرات را یک به یک انجام دهید و سایت را چک کنید، اگر مشکلی نبود سراغ تغییرات بعدی بروید از وارد کردن چندین دستور در htaccess پرهیز کنید.
با افزودن کدهای مختلف به فایل htaccess. میتوان کارهای متفاوتی انجام داد، بعضی از این اقدامات برای اهداف امنیتی هستند. در این بخش از مقاله آموزش htaccess چند نمونه از این اقدامات برای بهبود وضعیت امنیتی را میخوانید.
بلاک کردن دسترسی برخی IPها به سایت
اگر بخواهید جلوی دسترسی یک IP مشخص یا یک رنج IP (محدودهای از IPهای مختلف) به سایت خود را بگیرید، یکی از روشهای این کار، درج چند خط دستور ساده در فایل htaccess است.
برای اینکه جلوی دسترسی محدودهای از IPها را بگیرید کافی است دستوری مثل دستور زیر را وارد کنید:
order allow,deny
deny from 255.0.0.0
deny from 123.45.6.
allow from all
(محدوده IPها را طبق نظر خود تعیین کنید، IPهای درج شده در این قسمت آزمایشی هستند)
دستور بالا به وب سرور آپاچی میگوید IPها در محدوده تعیین شده را ممنوع الورود کند! اگر دقت کنید، در خط سوم، بخش چهارم IP (بعد از عدد ۶) نوشته نشده؛ این نشان میدهد که تمام IP های این رنج باید بلاک شوند.
بلاک کردن همه IPها به جز خودتان
گاهی اوقات برای انجام ویرایشهایی در سایت، لازم است دسترسی همه به جز مدیر سایت قطع شود. در این صورت، همه بازدیدکنندگان با خطای عدم دسترسی ۴۰۳ مواجه خواهند شد و تنها مدیر سایت که IP آن در دستور درج میشود به سایت دسترسی دارید.
برای این کار دستور زیر را به فایل htaccess سایت خود اضافه کنید:
order allow,deny
allow from 255.0.0.0
deny from all
فراموش نکنید به جای ۲۵۵.۰.۰.۰ باید آدرس IP خود را بنویسید.
بلاک کردن همه IPها به جز خودتان
بلاک کردن مرورگر آفلاین و رباتهای مخرب
مرورگر آفلاین (Offline browser) نرم افزاری است که تمام لینکهای بخشهای مشخصی از سایت را یکباره دانلود میکند، تا کاربر نیاز نداشته باشد برای مطالعه مطالب سایت شما، مجددا آنلاین شود. این برنامه به تنهایی مخرب نیست و هیچ آسیبی به سایت شما نمیرساند اما اگر بخواهد حجم بالایی از دادههای سایت شما را دانلود کند، بخش زیادی از منابع وب سرور را اشغال میکند و پهنای باند زیادی هم مصرف خواهد کرد.
رباتهای مخرب همانطور که از نامشان پیداست بین فایلهای سایت شما میخزند و هرکدام کارهای مختلفی انجام میدهند. مثلاً برخی از رباتها دنبال اطلاعاتی مثل آدرسهای ایمیل معتبر هستند و با جمع آوری آنها سیلی از پیامهای اسپم را به سمت ایمیلتان روانه میکنند. در این بخش از آموزش htaccess، روشهای جلوگیری از بروز اینگونه مشکلات را در اختیارتان قرار خواهیم داد.
برای اینکه جلوی مرورگر آفلاین و رباتهای مخرب را بگیرید، دستور زیر را به فایل .htaccess اضافه کنید.
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:[email protected] [OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]
RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* – [F,L]
دستورات درج شده در لیست بالا اسامی انواع رباتها میباشد که از این پس اجازه دسترسی به سایت شما را ندارند.درصورت تمایل میتوانید نام رباتهای دیگر را هم به آنها اضافه کنید.
بلاک کردن مرورگر آفلاین و رباتهای مخرب htaccess
غیرفعال کردن نمایش دایرکتوری سایت به کمک htaccess
استفاده از قابلیت غیر فعال کردن نمایش دایرکتوری میتواند بسیار کاربردی و مفید باشد به طور مثال فرض کنید در مسیری ازهاست خود فایلهایی ذخیره کردهاید که دوست ندارید برای دیگران نمایش داده شود یا دایرکتوری تصاویر سایت شما برای دیگران لیست شود برای جلوگیری از انجام این کار، کافی است دستور زیر را به فایل htaccess خود اضافه کنید.با اضافه کردن این دستور تمامی فایلهایی که در مسیر دایرکتوری htaccess قرار دارند نمایش داده نمیشوند.
IndexIgnore
نکته مهم: هر فایل htaccess در مسیر اصلی و مسیرهای زیرمجموعهاش اجرا میشود، پس اگر بخواهید دستوراتی مثل عدم نمایش یک دایرکتوری خاص را اجرا کنید، میتوانید در مسیر موردنظر فایل htaccess را ایجاد نمائید. وجود چندین فایل htaccess درهاست مشکلی ایجاد نخواهد کرد، تنها کافیست دستورات هرکدام از این فایلها در دایرکتوری زیرمجموعه اعمال شود؛ به طور مثال اگر فایل htaccess در دایرکتوری publich_html قرار گرفته باشد، دستور عدم نمایش دایرکتوری به دلیل اهمیت publich_html موجب بسته شدن کل دایرکتوریها خواهد شد.
غیرفعال کردن نمایش دایرکتوری سایت به کمک htaccess
عدم نمایش فایلهای خاص در یک دایرکتوری
اگر بخواهید از نمایش فرمت خاصی از فایلها جلوگیری کنید (مثلاً فقط فایلهای zip یا jpeg یا هر چیز دیگری)، باید دستور زیر را وارد کنید:
IndexIgnore *.zip
.zip بیانگر فرمت فایلی است که نباید نمایش داده شود.
اگر بخواهید چند فرمت مختلف را لیست نکند باید آنها را به شکل زیر به آخر این دستور اضافه کنید:
IndexIgnore *.zip *.jpg *.gif
آموزش دستور نمایش دایرکتوری در htaccess
در بعضی سرورها، تنظیمات به نحوی انجام شده است که هیچ کدام از دایرکتوریها لیست نمیشوند. اگر در این موارد بخواهید یک دایرکتوری امکان لیست شدن توسط کاربران و نمایش را داشته باشد، باید دستور زیر را در فایل htaccess وارد کرده و فایل را در دایرکتوری مورد نظر قرار دهید:
Options +Indexes
آموزش دستور نمایش دایرکتوری در htaccess
جلوگیری از دسترسی به فایلهای php includes
اگر در مسیری ازهاست خود فایلهای php includes دارید و نمیخواهید بازدیدکنندگان مستقیماً از طریق مرورگر به آنها دسترسی داشته باشند، با ثبت این دستور در یک فایل htaccess و قراردادن آن در دایرکتوری مورد نظر، میتوانید این کار را انجام دهید:
## Enable Mod Rewrite, this is only required once in each .htaccess file
RewriteEngine On
RewriteBase /
## Test for access to includes directory
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /includes/ .*$ [NC]
## Test that file requested has php extension
RewriteCond %{REQUEST_FILENAME} ^.+\.php$
## Forbid Access
RewriteRule .* – [F,NS,L]
جلوگیری از دسترسی به php.ini و php.cgi
برای جلوگیری از دسترسی افراد متفرقه به این فایلها کافی است دستور زیر را در یک فایل htaccess ثبت کنید:
## Enable Mod Rewrite, this is only required once in each .htaccess file
RewriteEngine On
RewriteBase /
## Test for access to includes directory
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /includes/ .*$ [NC]
## Test that file requested has php extension
RewriteCond %{REQUEST_FILENAME} ^.+\.php$
## Forbid Access
RewriteRule .* – [F,NS,L]
جلوگیری از دسترسی به php.ini و php.cgi
جلوگیری از ارسال درخواست به سرور با کاراکترهای غیرمجاز
وقتی درخواستی به سرور ارسال میشود که شامل کاراکترهای غیر مجازی مثل علامتهای خاص (^&*$) است، ممکن است هدف ارسال کننده درخواست حمله به سایت یا اجرای یک دستور غیرمجاز باشد. برای اینکه از ارسال چنین درخواستهایی به سرور جلوگیری کنید، باید دستور زیر را وارد یک فایل .htaccess کنید:
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ [a-zA-Z0-9\.\+_/\-\?\=\&]+\ HTTP/ [NC]
RewriteRule .* – [F,NS,L]
آموزش ریدایرکت با htaccess
ریدایرکت (Redirect) به معنای انتقال بازدیدکننده از یک صفحه به صفحهای دیگر میباشد. این کار به دلایل مختلفی انجام میشود از جمله مهمترین آن میتوان به زمانی اشاره کرد که میخواهیم کاربر را از صفحه قدیمی به صفحهای جدید منتقل کنیم. توضیحات کامل را میتوانید در مقاله «ریدایرکت در وردپرس» مطالعه نمائید.
یکی از روشهای این کار ریدایرکت با htaccess است. برای انجام آن باید مثل مراحل قبل یک فایل htaccess بسازید و دستور زیر را در آن وارد کنید:
Redirect /old_dir/ http://www.yourdomain.com/new_dir/index.html
در دستور بالا، به جای old_dir آدرس دایرکتوری قدیمی خود (مبدأ) را بگذارید و به جای عبارت new_dir، آدرس دایرکتوری جدید (مقصد) را. در نوشتن آدرس مبدأ نیازی نیست نام دامنه را بنویسید، اینطور فرض کنید که علامت / به جای نام دامنه شماست.
مثلاً
Redirect /Amoozeshe_htaccess/ http://www.yourdomain.com/Amoozeshe_htaccess_jadid.html
آموزش ریدایرکت با htaccess
ضمیمه: آموزش ویرایش فایل درهاست و اضافه کردن کد
این بخش به عنوان ضمیمه به مقاله آموزش htaccess اضافه شد تا در صورت نیاز به راهنمایی در خصوص نحوه تغییر فایلها درهاست، دسترسی آسانتری برای مطالعه داشته باشید.
نکته: ما برای آموزش تغییر و ویرایش فایلها درهاست، با کنترل پنل cPanel آموزش میدهیم اما این موضوع در دایرکت ادمین، plesk و… تفاوت چندانی ندارد.
آموزش ویرایش فایل در cPanel
برای این کار ابتدا وارد کنترل پنلهاست خود میشویم و از آنجا وارد بخش file manager میشویم
آموزش ویرایش فایل در cPanel
وارد مسیری میشویم که فایل ما در آنجا قرار دارد و میخواهیم تغییرش دهیم. در اینجا ما فایل .htaccess را انتخاب کرده ایم که متناسب با آموزشمان باشد. روی آن راست کلیک کرده و گزینه Edit را انتخاب میکنیم.
آموزش ویرایش فایل درهاست ۲
می توانید با چپ کلیک آن را Select کنید و از منوی بالا گزینه Edit را بزنید.
edit فایل درهاست
فایل در ویرایشگر کنترل پنل باز میشود و آماده است که هر دستوری را در آن وارد کنید یا کدها را تغییر دهید. برای ذخیره تغییرات حتماً باید دکمه Save را بزنید.
ویرایش فایل درهاست آموزش
خلاصه و نتیجه گیری
در این مقاله به آموزش کامل htaccess پرداختیم و توضیح دادیم چطور با استفاده از ثبت دستوراتی در این فایل، میتوانید به وب سرور خود دستور دهید اقداماتی برای شما انجام دهد. البته آموزش htaccess محدود به اینها نیست اما پراستفادهترین دستورات این دستوراتی بود که آموزش دادیم.
اگر این آموزش برایتان مفید بود یا سوالی داشتید، حتماً در بخش نظرات با ما در میان بگذارید.
DirectoryIndex home.html
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php
پوشهای با نام errors در شاخه httpdocs ایجاد شده و فایل 404.html که به صورت دلخواه شخصی سازی شده است در این پوشه قرار داده شود.
(جهت مسدود سازی آدرس آی پی فرد مهاجم)
order allow,deny
deny from 5.144.23.204
deny from 83.65.8.53
allow from all
order deny,allow
deny from all
allow from 94.232.169.21
Options +Indexes
Options -Indexes
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?domain.ir [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://www.domain.ir/blocked-warning.jpg [NC,R,L]
- Domain.ir : نام دامنه وب سایت شما
- (jpg, jpeg, png, gif) فرمت فایلهای محدود شده
- http://www.domain.ir/blocked-warning.jpg آدرس تصویر حاوی پیام خطا و هشدار استفاده غیر مجاز از تصاویر.
htaccess.اچ تی اکسز که مخفف کلمههایپرتکست اکسز ( Hypertext Access = htaccess ) میباشد، یک فایل مهم برای مدیران وب سایتها محسوب میشود، چراکه به کمک این فایل ساده میتوانند تنظیمات کاربردی وب سایت خود را بر روی وب سرور مورد استفاده اعمال نمایند.
فایل htaccess چه کاربردی دارد؟
آموزش ویرایش فایل htaccess.
فایل htaccess چه کاربردی دارد؟
برای مثال به کمک اچ تی اکسسز میتوان بسادگی آدرس دهی ( URL ) بخشهای مختلف وب سایت را به صورت کاربر پسند ( user friendly ) و مناسب برای موتورهای جستجو ( SEO ) اصلاح نمود و یا برای امنیت بیشتر، لایه امنیتی و کلمه عبور را برای ورود به یک پوشه در نظر گرفت و یا عملیات ریدایرکت را به کمک آن صورت داد. به همین ترتیب، نرم افزارهای مدیریت محتوای ( cms ) رایج مانند وردپرس ( wordpress ) عموما به همراه فایل htaccess. پیشفرض خود عرضه و نصب میشوند که تنظیمات اختصاصی اسکریپت مربوطه را در داخل خود دارا میباشد.
آیا تا به حال محتوای این فایل را در اسکریپت خود بررسی کرده اید؟ مقاله پیش رو، شما را تا حدی با محتوای این فایل و همچنین چند مثال کاربردی آشنا خواهد کرد. البته در اعمال تغییرات در این فایل باید نهایت دقت را داشته باشید، چراکه یک تغییر ساده میتواند عملکرد سایت شما را با اشکالاتی همراه سازد. برای درک بهتر عملکرد این فایل، در ابتدا به معرفی اجمالی وب سرور محبوب آپاچه ( apache ) میپردازیم.
زمانی که سیستم عامل گنو-لینوکس ( GNU/Linux ) در حال پوست انداختن و رشد در حوزه سیستم عاملهای سمت سرور بود، به ابزاری قدرتمند نیاز داشت تا کار را یکسره کند و گوی رقابت را در حوزه سرویسهای وب نیز برباید. در این هنگام بود که وب سرور محبوب Apache ( آپاچه ) متولد شد و شهرت و قدرت لینوکس را به اوج برد و به برگ بندهای بی بدیل برای لینوکس تبدیل گشت.
آموزش ویرایش فایل htaccess.
هم اکنون پس از گذشت قریب به 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 در انتها فایلها نمایش داده نمیشود. امیدواریم آموزش فایل htaccess. برای شما کاربردی و موثر بوده باشه.
PHP get domain name - Stack Overflow
What is .htaccess? - Apache .htaccess Guide, Tutorials & Examples
How to Redirect WWW to non WWW in HTACCESS
php - Get current domain - Stack Overflow
KeywordTool Client: Get search engines keyword volume and suggestions - PHP Classes
Free Web Tools by PHPJabbers | SEO Tool | Sitechecker
Redirect non-www to www or www to non-www
How do I redirect my site using a .htaccess file? | Media Temple Community
فایل htaccess چیست؟ کجاست؟ (+18 دستور برای مدیریت سایت و SEO) | وبلاگ ایران سرور
NGINX یک وب سرور منبع باز و گزینه اصلی و رقیب Apache HTTP Server که از بدو تأسیس محبوبیت خود را کسب کرده است و در طیف وسیعی از برنامهها برای سرویس دهی به وب، پراکسی معکوس، ذخیره سازی، تعادل بار، پخش رسانه و موارد دیگر مورد استفاده قرار میگیرد.
تاریخچه NGINX
در سال 2002، یک چالش به اسم C10K در دنیای اینترنت برگزار شد که برنامهنویسان موظف بودند برنامهای بسازند که بتواند 10 هزار درخواست را همزمان پاسخ دهد. به عنوان راهحل، مهندس نرم افزار Igor Sysoev اولین نسخه عمومی NGINX را منتشر کرد که متکی به معماری ناهمگام و مبتنی بر رویداد است. این بدان معنی است که بر خلاف Apache HTTP Server، وب سرور NGINX چندین پردازش و رشته را برای درخواستها در یک فرآیند کارگر انجام میدهد، در مقایسه با پردازشها یا رشتههای اختصاصی، که Apache به آن معروف است.
NGINX در مقابل Apache
زمانی بود که آپاچی بدون هیچ گونه سوالی در دنیای وبسرور سلطنت میکرد و همه چیز پشت آپاچی بود. امروز، در سال 2019، چشم انداز وب سرور تغییر کرده است و بسته به عملکرد خاص سرور شما، میتوانید از گزینههایی مثل nginx یا iis استفاده کنید.. در هر صورت، Apache به سرعت در حال از دست دادن محبوبیت است زیرا برنامههای وب و عملکردهای آنها در حال پویاتر شدن و خاص بودن برای اهداف خود هستند.
یک دهه پیش، هنگامی که برنامههای وب و سرورها تقریباً یکسان بودند، Apache میتوانست تقریباً همه مواردی را که نیاز دارید برطرف کند. اما با رشد وب و نیازهای مختلف، NGINX شروع به پر کردن نیازی کرد که Apache نمیتوانست. Apache برای میزبانی مشترک از چندین سایت عالی است، اما NGINX قدرت و تسلط خود را در مورد محتوای پویا، ویژگیهای پیچیده و انعطاف پذیری محض در یک فضای دائماً در حال تغییر محتوای وب نشان میدهد.
NGINX چه تفاوتی با آپاچی دارد؟
NGINX پس از Apache وارد فضای سرور شد، بنابراین توسعه دهندگان این مزیت را داشتند که از مسائل مربوط به سرویس دهی وب و محدودیتهای فنی که Apache داشت آگاه باشند.
رسیدگی مستقیم به این مسائل و محدودیتها NGINX به معماری تک رشتهای رویداد محور، ناهمگام و متکی وابسته است. با استفاده از قدرت اساسی سیستم عاملهای مدرن مانند Linux و Unix، وب سرور NGINX قادر به ارائه حداقل 10 برابر (و اغلب 100-1000x بیشتر) درخواست در هر سرور نسبت به Apache است. با بهینه سازی کارآمد استفاده از حافظه و CPU، وب سرور NGINX قادر است به سرعت مقیاس بندی کند تا ارتباطات بیشتری با کاربران فراهم کند و در عین حال پهنای باند بهتری را ارائه دهد، در حالی که در مقایسه با سایر سیستم عاملهای مدرن، منبع کمتری استفاده میکند.
اگرچه استفاده از Apache به عنوان load balancer کاملاً قابل انجام است، اما Apache به قدرت و دوام مشهور است در حالی که NGINX به سرعت، پاسخگویی و کارایی منابع معروف است. بنابراین داشتن NGINX به عنوان یک پروکسی معکوس با Apache به عنوان سرور backend بسیار رایج تر است.
NGINX چگونه درخواستهای پویا را پردازش میکند؟
شما میتوانید تستهای معیار را در تمام طول روز انجام دهید اما موارد استفاده در دنیای واقعی یک روش بسیار بهتر برای تعیین نحوه عملکرد سرورها در طبیعت است. ما میتوانیم نگاهی بیندازیم به محتوای استاتیک در مقابل پویا، و اینکه هر سرور چگونه هر دو درخواست را کنترل میکند.
Apache - بخشی از آنچه Apache را عالی میکند، قابلیت تنظیم مدولار با MPM یا "ماژولهای چند پردازشی" است. Apache کاملاً قادر به مدیریت محتوای استاتیک و پویا از طریق روشهای متداول مبتنی بر فایل و همچنین از طریق کارگران MPM است. با تعبیه پردازنده زبان مورد نیاز در هر نمونه کارگر، محتوای پویا را میتوان بدون تکیه بر اجزای خارجی در سرور اجرا کرد
NGINX - به خودی خود، NGINX قادر به پردازش محتوای پویا به طور طبیعی نیست. به منظور مدیریت یک زبان برنامه نویسی مانند PHP، NGINX باید درخواست را به پردازنده خارجی که اجرای اسکریپت را کنترل میکند منتقل کند و سپس منتظر ارسال محتوا، ارسال و آماده ارائه به کاربر نهایی است. این بدان معنی است که مدیران باید ارتباطات را از طریق پروتکلهایی که NGINX میداند مانند http، FastCGI، SCGI و uWSGI استفاده کند، پیکربندی کنند.
از آنجا که مفسران پویا خارجی هستند و با فرایندهای کارگر سازگار نیستند، آنها فقط برای ارائه محتوای پویا استفاده میشوند در حالی که محتوای ثابت را میتوان به طور مستقیم ارائه داد. این به NGINX شهرت سرعت و واکنش پذیری میبخشد.
آموزش نصب nginx در ubuntu
سادهترین راه برای نصب nginx در اوبونتو با استفاده از apt-get است. برای استفاده از بسته رسمی اوبونتو، دستورالعملهای زیر را دنبال کنید.
# See what version is available in the repos
apt-cache show nginx
# Install with apt-get package manager
sudo apt-get install nginx
# It will be started by default. Control it with:
sudo systemctl stop nginx
sudo systemctl start nginx
sudo systemctl restart nginx
# View logs with:
journalctl -u nginx
# Get the status with:
sudo systemctl status nginx
مهمترین مسیرهای nginx بعد از نصب در ابونتو:
مسیر فایل کانفیگ: /etc/nginx/nginx.conf/
مسیر فایل کانفیگ پیشفرض: etc/nginx/sites-available/default/
مسیر لاگ فایلها: /var/log/nginx/
مسیر webroot پیشفرض: /var/www/html/
ارائه فایلهای استاتیک
ارائه فایلهای استاتیک اساسیترین وظیفه برای یک وب سرور است. فقط فایلهای .txt، .html، .zip یا هر نوع دیگری را وارد کنید و سرور آنها را مستقیماً باز میگرداند.
در این مثال تنظیمات در پورت 777 گوش میدهند، نتیجه در http://localhost:7777 قابل مشاهده است و فهرست دایرکتوری ارائه میشود. همچنین یک مثال از تنظیم کنترلهای جداگانه در یک زیردایرکتوری با خاموش کردن فهرست دایرکتوریها و تعیین فایلهای index ذکر شده است. همچنین دایرکتوری /var/www/static-content/ را در آدرس /static/ ارائه میدهد.
http {
server {
listen 0.0.0.0:7777;
root /path/to/public/directory;
location /relative-to-root/dir {
autoindex off;
# Default to index.htm or index.html
index index.html, index.htm
}
location /static/ {
alias /var/www/static-content/;
}
location / {
# Directory listing (risky!)
autoindex on;
}
}
}
یک پروکسی معکوس ایجاد کنید
این پیکربندی ترافیک را از پورت 80 به localhost: 9999 ارسال میکند، از جمله IP اصلی به عنوان یک عنوان HTTP اضافی، X-Real-IP. برخی از پروکسیها به جای آن از X-Forwarded-For استفاده میکنند.
http {
server {
listen 0.0.0.0:80;
listen [::]:80;
server_name mydomain.com;
location / {
proxy_pass http://localhost:9999/;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
اگر میخواهید تمام ترافیک HTTP روی پورت 80 را به نسخه امن HTTPS که در پورت 443 گوش میدهد هدایت کنید، یک تغییر مسیر دائمی 301 را روی پورت 80 برای نام دامنه تنظیم کنید. این مثال تمام ترافیک http (اعم از پیشوند www یا غیر www) را به نسخه HTTPS با پیشوند www هدایت میکند.
# Redirect HTTP traffic to HTTPS (both www and non-www)
server {
listen 0.0.0.0:80;
listen [::]:80;
server_name mydomain.com www.mydomain.com;
# Permanent redirect to HTTPS version with www prefix
return 301 https://www.mydomain.com$request_uri;
}
هدایت از non-www به www
اگر از نام دامنه بدون پیشوند برای چیزی استفاده نمیکنید، باید آن را به www.yourdomain.com هدایت کنید. با این کار خطاهای تکراری و تعارض با موتورهای جستجو که صفحه شما را دوبار ثبت میکنند کاهش مییابد.
# Permanent redirect of non-www prefixed traffic to www version
server {
listen 0.0.0.0:443 ssl;
listen [::]:443 ssl;
server_name mydomain.com;
ssl_certificate /path/to/cert.pem
ssl_certificate_key /path/to/private-key.pem
# Permanent redirect to HTTPS version with www prefix
return 301 https://www.mydomain.com$request_uri;
}
اضافه کردن اعتبارسنجی ساده http
برای افزودن HTTP basic author، کافی است متغیرهای پیکربندی auth_basic و auth_basic_user_file را تنظیم کنید. برای تولید فایل user، به فایل اجرایی htpasswd احتیاج دارید. میتوانید آن را به دو روش نصب کنید:
# Fedora
sudo dnf install httpd-tools
# Ubuntu
sudo apt install apache-utils
با -c مانند این یک فایل رمز جدید ایجاد کنید:
# Will prompt for password
htpasswd -c /path/to/.htpasswd myusername
# No password prompt
htpasswd -c /path/to/.htpasswd myusername mypassword
# Add additional users to an existing file
htpasswd /path/to/.htpasswd newuser
سپس، داخل فایل پیکربندی nginx برای سرور خود، این خطوط را اضافه کنید:
server {
# ...
auth_basic "Restricted access.";
auth_basic_user_file /path/to/.htpasswd;
# ...
}
دیپلوی یک برنامه وب Angular
استقرار یک برنامه وب Angular درست مانند ارائه فایلهای استاتیک به جز "بازنویسی" URLها برای عملکرد مستقیم URLها، پیکربندی try_files مورد نیاز است. با افزودن آن، مانند این مثال نشان میدهد، برنامه Angular هنگام بازدید از URL مستقیم، همانطور که انتظار میرود رفتار میکند.
server {
listen 0.0.0.0:80;
listen [::]:80;
root /var/www/angularapp;
location / {
try_files $uri $uri/ /index.html;
}
}
دیپلوی برنامههای Python WSGI مانند Django و Flask
برنامه وب پایتون توسط یک سرور WSGI اجرا میشود. Waitress آسان برای استفاده است و بر روی Windows، Linux و Mac کار میکند. میتوانید از این برنامه برای اجرای هر برنامه WSGI استفاده کنید، اعم از جنگو، فلاسک یا هر چیز دیگر. شما معمولاً این سرور WSGI را به عنوان سرویس سیستم تنظیم میکنید. با لینوکس میتوانید ایجاد فایلهای Systemd Service را دنبال کنید و در Windows، Python Script را به عنوان سرویس Windows اجرا کنید.
python3 -m pip install waitress
python -m waitress --listen=127.0.0.1:8001 my_app:app
با استفاده از برنامه WSGI که به درخواستهای پویا گوش میدهد و به آنها سرویس میدهد، از Nginx برای بازگرداندن پروکسی درخواستها به سرور WSGI استفاده خواهید کرد. علاوه بر این، شما به طور کلی باید برخی از فایلهای استاتیک را که میتوانند با نام مستعار مکان انجام شوند، ارائه دهید.
پیکربندی سرور nginx معمولی برای برنامه WSGI چیزی شبیه به این است:
server {
listen 0.0.0.0:80;
listen [::]:80;
server_name example.com;
location /static/ {
alias /path/to/app/static/;
}
location / {
proxy_pass 127.0.0.1:8001;
proxy_set_header X-Real-IP $remote_addr;
}
}
server{
root /var/www/example.com/html;
index index.php index.html index.htm index.nginx-debian.html;
servername example.com www.example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
https://www.basezap.com/difference-php-cgi-php-fpm/
https://parspack.com/blog/programming/webserver-tutorial/php-fpm-optimization
/etc/php/8.2/fpm/php.ini
LiteSpeed Web Server is proprietary web server software. It is the 4th most popular web server, estimated to be used by 10% of websites as of July 2021. LSWS is developed by privately held LiteSpeed Technologies. Wikipedia
Programming languages: C, C++
Developer: LiteSpeed Technologies
License: Proprietary software
Initial release: July 1, 2003; 20 years ago
Operating system: CloudLinux OS, AlmaLinux/Centos/Red Hat/Fedora, Debian/Ubuntu, FreeBSD
Stable release: 5.4.12 / 22 March 2021; 2 years ago