همه چیز درباره htaccess
يكشنبه, ۱۹ آبان ۱۳۹۲، ۰۸:۱۴ ق.ظ
htaccess چیست ؟یک فایل بسیار ساده با محیط تکست .
چگونه میتوان آنرا تولید کرد ؟
برای ساختن این فایل تنها کافیست یک محیط تکست ادیتور داشته باشید . مثل notepad
این فایل در کجا هست ؟
این فایل در دایرکتوری اصلی وبسایت شما قرار دارد و هر دایرکتوری دیگری که بخواهید .
وظیفه این فایل چیست ؟
تقریبا تمامی محدودیتهای اعمالی بر آن دایرکتوری را بر عهده دارد و میتواند پیغامهای خطا را مدیریت کند و چندین وظیفه دیگر که اگر کمی در تنظیمات آن قصور و غفلت کنید شاید سایت شما بار گذاری نشود .
تمامیهاستها از این نوع گونه فایل حمایت میکنند ؟
این بستگی به میزبان شما دارد اصولا از این فایل حمایت میکنند . اما اگر هم میخواهید مطمئن شوید میتوانید از وبمستر سرور خود بپرسید .
قبل از شروع کار حتما یک نسخه بک آپ از فایلی که هم اکنون در دایرکتوری شما قرار دارد بگیرید بعضی وبسرورها این فایل را دارند اما داخلش هیچی نیست که دیگر نیازی به پشتیبان گیری نیست .
قبل از شروع آموزش بگویم که این آموزش مختص صاحبان وب سایتها هست و کاربرانی که دارای سایت اختصاصی نیستند نمیتوانند استفاده چندانی از این مطلب بکنند اما خوب برای اطلاعات عمومی بد نیست به ادامه ان بپردازید . فکر کنم تقریبا 90% صاحبان وب این فایل را دیده باشند و بدون هیچ شکی در مورد ان از کنار ان گذشته باشند برای همین هم احتمال میدهم یکی از موضوعاتی که در موردش کمتر مقاله ای پیدا میکنید همین مطلب باشد . به هر حال تصمیم گرفته ام کمی در مورد این فایل بظاهر بی ارزش صفر کیلوبایتی توضیحاتی بدهم .
با استفاده از این فایل میتوانید پیغامهای خطایی که ظاهر میشود را تغییر دهید یا اینکه صفحه را بدون استفاده از redirector کنترل پنل redirect کنید یا اینکه اجازه لیست گرفتن از دایرکتوری خاصی از وبسایتتون رو محدود کنید .
قبل از شروع کار مطمئن شوید که ادیتور شما خاصیت word wrap را غیر فعال کرده است اگر نه خودتان آنرا غیرفعال کنید .
فایل .htaccess در دایرکتوری اصلی وبسایت شما یا سابدایرکتوری شما قرار دارد دستوراتی که در این فایل قرار میگیرد نه تنها دایرکتوری جاری را تحت تاثیر خود قرار میدهد بلکه کلیه زیردایرکتوریهای خود را نیز در بر میگیرد . بنابراین اگر از این فایل برروی دایرکتوری اصلی خودتان استفاده کنید تمامی سایت را در برمیگیرد . در ضمن میتوانید این فایل را در هر دایرکتوری که خواستید نیز ایجاد کنید تا محدوده کنترل در دست خودتان باشد . اگر با CSS کار کرده باشید کار کردن با این فایل هم تقریبا مشابه همان است و برای افرادی که با ان اشنایی دارند اسانتر است به هر حال هر فایلی که در دایرکتوری ویژه ای قرار دارد به نزدیکترین فایل htaccess خود مرتبط میشود و ان htaccess ان فایل را کنترل میکند .
برای ساختن این فایل هیچ نیازی به نرم افزار یا سخت افزار ویژه ای ندارید تنها به یک notepad یا هر پردازنده متنی دیگری نیازمندید .
برای ساختن این فایل که نامی ندارد و فقط هشت حرف برای نوع فرمت ان در نظر گرفته شده است “.htaccess” وقتی میخواهید این فایل را در پردازنده متنی خود ذخیره کنید نام فایل به این صورت ذخیره میشود .htaccess.txt
برای اینکه چنین اتفاقی نیفتد کافیست از منوی file گزینه save as… را انتخاب کنید در file type گزینه all files را انتخاب کنید و سپس در file name تایپ کنید “.htaccess” دات اچ تی اکسس را درون دو کوتیشن بگذارید اگر نتوانستید این کار را بکنید بعدا میتوانید از طریق کنترل پنل یا نرم افزار ftp خود نام فایل را عوض کنید . در مورد استفاده از نرم افزارهای ftp بگویم که همانطور که میدانید اینگونه نرم افزارها برای اسودگی اتصال به وبسرورتان میباشد که فایلها را در سه نوع upload میکند که سه گزینه Auto , binary, ASCII وقتی این فایل را با ftp اپلود میکنید یادتان باشد نرم افزار شما در حالت ASCII باشد . در ضمن یک مطلب دیگر هم در این مورد که باید CHMOD که مخفف Change MODe میباشد را برای این فایل عوض کنید پرمیشن این فایل باید 644 باشد یا RW-R—R— که این عمل هم برای افزایش امنیت میباشد که خوشبختانه همگی اشنایی با ان را دارید اما شاید بعدا بیشتر در مورد permissionها توضیح دادم .
این فایل به شما اجازه میدهد که شما کاربران و ویزیتورهای خودتان را از صفحه ای به صفحه دیگر منتقل کنید حتما شده است که بخواهید این کاررا انجام دهید مثلا در مورد خود من شما از parsx.com به weblog.parsx.com میروید البته من از این روش استفاده نکرده ام اما دلایل دیگری نیز میتواند عامل شود که شما از این ریدایرکت استفاده کنید شاید کاربر شما اشتباها ادرس صفحه ای از وبسایت شما را وارد کند یا اینکه شاید لینکی در وبسایت شما بنا به دلیلی شکسته شده باشد و از بین رفته باشد و ان صفحه پاک شده باشد به جای اینکه کاربر شما هیچ چیزی نبیند میتوانید انرا به صفحه اصلی سایت بسته به سلیقه خودتان منتقلش کنید . برای مثال فرض کنید کاربری با یک پیغام خطا مواجه شد برای آنکه او را به صفحه دیگری منتقل کنید باید به این صورت در فایل بنویسید :
به جای errornumber شماره خطا را مینویسید اصولا خطای 404 زیاد اتفاق میفتد بنابراین میتوانید شماره 404 را بنویسید .
اگر خواستید تمامی پیغام خطاها را به فولدر خاصی ببرید به اینصورت عمل کنید :
در مورد شماره پیغام خطاها هم کمی بگویم :
400این پیغام اصولا زمانی ظاهر میشود که کاربر ادرس اشتباهی رفته باشد.
401وقتی کاربر به دایرکتوری و یا جایی میرود که اجازه ورود به انرا ندارد.
403وقتی فایل طوری تنظیم شده است که کاربر اجازه دسترسی به ان را ندارد.
404 not found.
500internal server error اشکال عموما از اسکریپتهای داخلیست .
باز هم پیغام خطا داریم که زیاد به درد نمیخورد .
کاربرد دیگر این فایل استفاده از رمز عبور است که البته پیکر بندی ان کمی سخت تر از تنظیمات پیامهای خطاست .
ابتدا فایلی به این نام ایجاد کنید .htpasswd این فایل هم خصوصیاتی چون فایل .htaccess دارد این فایل حاوی نامهای کاربری و کلمههای عبور . که بصورت زیر انها را تعیین میکنید در این فایل
حواستان باشد که هر کدام در یک خط باشند و همچنین اشتباها فضای space در اخر خطها وارد نکنید . در ضمن برای نامهای کاربری که مشکلی پیش نمیاید اما برای کلمههای عبور برای افزایش امنیت باید از نرم افزارهایی که انها را تبدیل میکنند استفاده کنید . که بعدا کمی در این مورد توضیح خواهم داد .
یادتان باشد که این فایل را در فولدرهای بالایی www یا public_html بگذارید یعنی در فولدر main .
حال برای انکه مشخص کنید کدام بخش از سایت یا کدام دایرکتوری شامل رمز عبور بشوند باید به این صورت عمل کنید در فایل htaccess خطوط زیر را اضافه کنید.
دستورات فوق باعث میشوند که در صورت نادرستی و عدم تطابق کلمه عبور با انچه که در فایل مربوطه ثبت شده از ورود کاربر جلوگیری کند . بنابراین اگر کاربری خواست وارد دایرکتوری شود که بدینوسیله محافظت میشد یک منوی پاپ آپ ظاهر میشود که نام کاربری و رمز عبور را میطلبد .
اگر خواستید در یک فولدر تنها از یک فایل محافظت کنید و عملیات پسورد گذاری تنها برروی یک فایل انجام شود دستورات زیر را در فایل وارد کنید .
برای محافظت از خود فایل .htaccess نیز میتوانید خط زیر را وارد کنید :
</files>اگر هاست شما از این فایل پشتیبانی میکند اما از SSI پشتیبانی نمیکند کافیست خطوط زیر را وارد کنید تا از SSI هم پشتیبانی شود .
خط اول بیان میکند که کلیه فایلها با پسوند shtml دارا صحت هستند خط دوم یک handler اضافه میکند خط سوم باعث میشود سرور این فایلها را اجرا کند .
بنابراین شما خودتان بدون نیاز به درخواست از ادمین سرور توانستید SSI را فعال کنید .
اگر هم دوست دارید فایلهای SSI بصورت جداگانه از فایلهای html نباشند میتوانید خطوط زیر را اضافه کنید :
این خطوط باعث میشوند که کلیه فایلها با پسوند html نیز به سرور برای اجرا شدن منتقل شوند تا اگر کدی که برای SSI باشد داشته باشد را اجرا کند و سپس صفحه شروع به بارگذاری کند .
قطع دسترسی از طریق IP
با این روش شما میتوانید بازه خاصی از آدرس IP یا IP خاصی از فرد خاصی را اضافه کنید تا ان فرد صاحب IP نتواند وارد صفحه خاص یا کل وبسایت شود . البته در کنترل پنلها اصولا این گزینه به صورت گرافیکی هست اما توجه کنید که اگر در انجا به این کار اقدام کنید فرد مورد نظر از کل سایت محروم خواهد شد اما با استفاده از این عمل میتوانید IP خاصی را از صفحه خاصی محروم کنید . مثلا فرض کنید ادرس گوگل بت رو بگذاریم تا نتواند وارد صفحه خاصی شود .
بنابراین خطوط زیر را اضافه کنید :
به جای ipaddress میتوانید ادرس ایپی را بنویسید مثل : 172.16.204.100
خط اول میگوید که شما میخواهید چکار کنید و خط دوم میگوید که ادرس مشخص شده را ممنوع کند . البته میدانید که هر فرد با هر قطع ارتباط از اینترنت مخصوصا سرویسهای تلفنی بعد از هر بار اتصال ادرس ایپی انها عوض میشود یعنی 3 رقم اخر که برای اینکه کل 256 ادرس را ممنوع کنید کافیست ارقام اخری را ننویسید .
خط اخر هم به دیگران اجازه میدهد که وارد سایت شوند . در ضمن شما میتوانید نام دامنه را نیز ممنوع کنید به این صورت که به جای ادرس ای پی بنویسید : .parsx.com
وقتی کاربر سعی در ورود به صقحه ویژه که ممنوع شده است را دارد پیغام خطای 403 را میبیند . اگر میخواهید مثلا دایرکتوری خاصی را از دسترسی همه ممنوع کنید اما اسکریپتها و دیگر اجزایی که به فایل نیاز دارند بتوانند به ان دسترسی پیدا کنند کافیست خط deny from all را اضافه کنید .
عوض کردن ایندکس فولدری خاص
اکثر میزبانهای وب فایلی که وظیفه لود شدن در هنگام باز کردن دایرکتوری خاصی را دارد با نام index قرار میدهند که با استفاده از htaccess میتوانید انرا عوض کنید . خط زیر را به فایل اضافه کنید :
حتما دیده اید که اگر فایل index.html در دایرکتوری نبود سرور فایل دیگری مثلا index.php را اجرا میکند روش به اینصورت است که در دستور فوق بعد از filename.html با یک فضای خالی نامهای دیگر را وارد میکنید . بنابراین سرور در دایرکتوری ویژه ابتدا به دنبال فایل اولی و سپس به دنبال فایل دومی و به همین ترتیب جستجو میکند . اگر هم هیچ یک از فایلها پیدا نشد پیغام خطای 404 ظاهر میشود .
Redirect توسط htaccess
حتما میدانید که راههای زیادی برای ریدایرکت کردن فایلی خاص به فایل دیگر وجود دارد اما بهترین کار همین است که میگویم
در فایل خط زیر را وارد کنید :
بنابراین دستور به شرح زیر است
منتهی یادتان باشد که newlocation باید نام ادرس کامل سایت باشد .
مخفی کردن محتویات دایرکتوری:
شاید درون فولدرتان فایلی نداشته باشید که لود شود بنابراین لیست تمامی فایلهای فولدر شما نمایان میشود که این اصولا از لحاظ امنیتی هم مناسب نیست و اگر یادتان باشد در مطلبی که در مورد ساخت سایت در ویندوز 2003 دادم گزینه ای داشتیم برای اینکه این فایلها لیست نشوند همچنین در کنترل پنل هم چنین گزینه ای داریم اما خوب ان هم به صورت کلی در سایت ظاهر میشود . به هر حال میتوانید خط زیر را وارد کنید :
یا خط زیر را وارد کنید
*اما عکس این عمل نیز میتواند اتفاق بیفتد یعنی به صورت پیشفرض در سرور تنظیم شده است که فایلها لیست نشودند اما شما میتوانید این گزینه را با خط زیر غیزفعال کنید :
اگر هم میخواهید فایلها لیست شوند اما گروه خاصی از انها مثلا عکسها لیست نشوند به صورت زیر عمل کنید :
بعضی سرورها بعضی از فایلها را نمیشناسند با استفاده از این فایل میتوانید خط زیر را وارد کنید تا انها را بشناسد مثلا برای فایلهای فلش میتوانید دستور زیر را وارد کنید
به فایل اعلان میکند که باید نام فایلی جدید اعلان شود.
میدانید که هر فایلی که از سرور سایت شما بارگذاری میشود در پهنای باند شما موثر است حال فرض کنید شما فایلی مثلا عکسی یا موسیقی برای دانلود در سایت گذاشته اید ! خوب بالطبع شما با استفاده از فرمول و محاسباتی که در ذهن خود انجام داده اید و نسبت به تعداد کاربرانتان سنجیده اید که با پهنای باندتان مطابقت داشته باشد اما کافیست سایتهای دیگری از فایل شما مثلا یک عکس شما استفاده کنند و عکس شما را در سایت خود قرار دهند و ادرس عکس ادرس همان عکسی باشد که در سایت شما قرار دارد بنابراین از پهنای باند شما برای بار گذاری عکس استفاده میشود لذا انروزی که پهنای باند شما از حد خود میگذرد شما باید هزینه کنید که باز هم پهنای باند بخرید در صورتی که میتوانید با استفاده از این فایل از انجام چنین کاری ممانعت کنید !منتهی قبلش باید توجه داشته باشید که ایا هاست سرور شما از mod_rewrite پشتیبانی میکند یا خیر ؟!
اگر نمیکند این گزینه برای شما فایده ای نخواهد داشت و نمیتوانید با این کار مبادرت ورزید .
به فولدری که ان فایل یا مجموعه عکسهای شما قرار دارد بروید و در فایل .htaccess ان دایرکتوری خطوط زیر را اضافه کنید
به جای mydomain.com نام دامنه خودتان را بنویسید مثلا parsx.com دستور فوق باعث میشود فایلهای با پسوند gif jpg نتوانند در سایتهای دیگر نمایش داده شوند اما شما میتوانید کار دیگری نیز بکنید مثلا بگذارید دیگران از عکسهای شما استفاده کنند و سپس طی یک حرکت ناجوانمردانه فایل htaccess را گونه ای تعویض کنید که تمامی عکسها و فایلها با عکس دیگری نمایش داده شوند مثلا عکسی بگذارید که ادرس سایت خودتان را بگذارید . مثلا freeservers چنین کاری کرده است . اگر به عکس سایتهایش لینک دهید نام سایت خودش نمایش داده میشود .
به جای mydomain نام دامنه خودتان و ادرس عکس خودتان رابه جای ادرس فوق بگذارید .
با .htaccess قلب وبسایت خود را تحت کنترل بگیرید
اگر از وبسرور آپاچی برای وبسایت خود استفاده میکنید، دیگر نیازی نیست برای هر مشکل جزئی و کوچک، به وبمستر هاستینگتان تماس بگیرید. با یادگیری قابلیتهای مهم فایل .htaccess، میتوانید کنترل کامل وبسایت خود را برعهده بگیرید.
در هنگام استفاده از فایل .htaccess، دانستن سه نکته از اهمیت بهسزایی برخوردار است:
نکته اول: فایل .htaccess را میبایست به صورت ASCII آپلود کرده و مجوز دسترسی به آن را بر روی 644 (یا rw-r--r--) تنظیم نمایید.
نکته دوم: فایل .htaccess را میتوانید به پوشههای مختلفی اعمال نمایید. به عنوان مثال اگر آن را بر روی root آپلود نمایید، تنظیمات آن به کل وبسایت اعمال خواهد شد و اگر آن را درون پوشهای نظیر images/ آپلود نمایید، تنظیمات آن به پوشه images و زیرپوشههای آن اعمال خواهد شد.
نکته سوم: هر htaccess را میبایست درون یک خط تایپ نمایید. یعنی در انتهای هر دستور، میبایست یکبار کلید Enter را فشار دهید.
جلوگیری از لیست شدن محتویات یک پوشه
فرض کنید پوشهای از تصاویر دارید و نمیخواهید که افراد غریبه، محتویان این پوشه را دیده و آنها را تماشا کنند. برای این کار، سه راه وجود دارد:
1- ساخت یک صفحه index و قرار دادن آن در پوشه مورد نظر
2- استفاده از فایل .htaccess
3- استفاده از فایلهای HEADER و README
از آنجا که بحث ما در مورد فایل .htaccess میباشد، راه دوم را مورد بررسی قرار میدهیم. برای این کار میبایست از فرمان IndexIgnore استفاده نمایید:
این کد از لیستشدن تمامی فایلهای پوشه مورد نظر، جلوگیری میکند. حال فرض کنید که درون پوشهای انواعواقسام فایلها نظیر فایلهای اچتیامال و تصاویر دارید و میخواهید که فقط از لیست شدن تصاویر جلوگیری شود. بدینمنظور میتوانید از کد زیر استفاده کنید:
در واقع این کد از لیستشدن تمامی فایلهایی که به .gif و .jpg ختم میشوند، جلوگیری میکند.
حال فرض کنید که سرور شما، به طور پیشفرض، از لیستشدن پوشهها جلوگیری کرده است و شما میخواهید آن را تغییر دهید. برای این کار میتوانید از دستور زیر استفاده کنید:
عوض کردن صفحه پیشفرض وبسایت
به طور کلی، تمامی وب سرورها از روی قانون خاصی صفحات وب را نشان میدهند. برای آنکه صفحات وب تنها به یک پسوند منحصربهفرد نظیر .htm ختم نمیشوند و انواع واقسام پسوندهای مختلف، برای صفحات وب وجود دارد.
حال فرض کنید که وبسرور شما، ابتدا فایل index.html را نشان میدهد و در صورت نبود آن، فایلهای index.htm، index.php و ... شما میخواهید این روند را تغییر داده و فایل index.php را در اولویت قرار دهید. بدین منظور میبایست از دستور DirectoryIndex استفاده نمایید:
کد بالا ابتدا به دنبال فایل index.php گشته و در صورت پیدا کردن آن، آن را به عنوان صفحه وب پیشفرض نمایش میدهد. اگر فایل index.php پیدا نشد، سرور به دنبال فایل بعدی که index.cgi میباشد گشته و همین روال، ادامه پیدا میکند. دقت داشته باشید که شما حتما مجبور به استفاده از index برای نام فایل نیستید و از هر اسم دیگری نیز، میتوانید استفاده کنید.
Redirects
شاید تا به حال برایتان اتفاق افتاده باشد که به وبسایتی مراجعه کرده باشید و سپس متوجه شوید که آدرس وبسایت به طور اتوماتیک عوض شده و در واقع شما به آدرس دیگری ارجاع دادهشدهاید. برای اینکار میتوانید از دستور Redirect استفاده نمایید:
همچنین میتوانید یک پوشه را به پوشه دیگر ارجاع دهید:
در جامعه وبمسترها، عبارت Hot Linkin یک عبارت نفرتبرانگیز است که از آن به عنوان «نقرهداغ وبمسترها» نیز یاد میشود. اما معنای آن چیست؟
فرض کنید دارای یک سایت عکاسی هستید که روزانه تعداد زیادی عکس در زمینههای مختلف را در آن آپلود میکنید و در اختیار عموم قرار میدهید. حال فرد دیگری از عکسهای شما در وبسایت خود استفاده میکند. این کار نه تنها برای شما هیچ سودی نخواهد داشت، بلکه از پهنای باند شما (BW) خواهد کاست و در نتیجه به زحمت و هزینه خواهید افتاد.
همچنین شما نمیتوانید بفهمید که چه وبسایتهایی از عکسهای شما استفاده کردهاند تا به آنها اخطار دهید.
برای جلوگیری از چنین عملی، میتوانید Hot Linkin را به وسیله mod_rewrite غیر فعال کنید:
یادتان نرود که mydomain.com را به آدرس وبسایت خود تغییر دهید. همچنین میتوانید کاری کنید در صورت استفاده از عکسهای سایت شما، به جای نمایش آنها، عکس مورد نظر شما نشان داده شود. مثلا اگر سایت A از عکسهای سایت شما استفاده کرد، عکسی را نمایش دهید که تبلیغ سایت شما باشد. برای اینکار میتوانید از کد زیر استفاده کنید:
آدرس عکس خود را در خط آخر کد تغییر دهید.
تذکر: mod_rewrite یکی از قابلیتهای وحشتناک بهدردبخور آپاچی میباشد که توضیح مفصل آن، احتیاج به یک مقاله صدصفحهای دارد.
صفحات خطا
به احتمال قوی با خطای معروف 404 در اینترنت سروکار داشتهاید. خطایی که اعصاب آدم را بههم میزند. این خطا در صورتی ظاهر میشود که صفحه مورد نظر شما (به هر دلیل)، در دسترس نباشد. یعنی در واقع صفحهای وجود نداشته باشد و شما آن را از مرورگر بخواهید.
وبسایتهای حرفهای و آنهایی که خواهان جذب مخاطب برای وبسایتهایشان هستند، این صفحات خطا را (که هر فرد با دیدن آنها سریعا دکمه close را میزند) سفارشی میکنند. یعنی به جای آن خطای 404 تکراری، یک صفحه خطای مناسب (در فرمت وبسایت) میگذارند و به مخاطب راهنماییهایی میدهند.
معمولا در این نوع صفحات خطا، بیوگرافی کوچکی از وبسایت و زمینه کاری آن نوشته شده و سپس مخاطب را (به وسیله لینک و یا اتوماتیک) به صفحه اصلی وبسایت ارجاع میدهند.
برای ساخت صفحات خطا (که تعداد آنها کم هم نیست!)، و ارجاع مخاطبین درصورت برخورد به صفحات خطای مختلف به آنها، میتوانید از کد زیر استفاده کنید:
به عنوان مثال کد زیر، مخاطب را در صورت مواجه شدن با خطای 404، به صفحه notfound.html ارجاع میدهد:
چگونه میتوان آنرا تولید کرد ؟
برای ساختن این فایل تنها کافیست یک محیط تکست ادیتور داشته باشید . مثل notepad
این فایل در کجا هست ؟
این فایل در دایرکتوری اصلی وبسایت شما قرار دارد و هر دایرکتوری دیگری که بخواهید .
وظیفه این فایل چیست ؟
تقریبا تمامی محدودیتهای اعمالی بر آن دایرکتوری را بر عهده دارد و میتواند پیغامهای خطا را مدیریت کند و چندین وظیفه دیگر که اگر کمی در تنظیمات آن قصور و غفلت کنید شاید سایت شما بار گذاری نشود .
تمامیهاستها از این نوع گونه فایل حمایت میکنند ؟
این بستگی به میزبان شما دارد اصولا از این فایل حمایت میکنند . اما اگر هم میخواهید مطمئن شوید میتوانید از وبمستر سرور خود بپرسید .
قبل از شروع کار حتما یک نسخه بک آپ از فایلی که هم اکنون در دایرکتوری شما قرار دارد بگیرید بعضی وبسرورها این فایل را دارند اما داخلش هیچی نیست که دیگر نیازی به پشتیبان گیری نیست .
قبل از شروع آموزش بگویم که این آموزش مختص صاحبان وب سایتها هست و کاربرانی که دارای سایت اختصاصی نیستند نمیتوانند استفاده چندانی از این مطلب بکنند اما خوب برای اطلاعات عمومی بد نیست به ادامه ان بپردازید . فکر کنم تقریبا 90% صاحبان وب این فایل را دیده باشند و بدون هیچ شکی در مورد ان از کنار ان گذشته باشند برای همین هم احتمال میدهم یکی از موضوعاتی که در موردش کمتر مقاله ای پیدا میکنید همین مطلب باشد . به هر حال تصمیم گرفته ام کمی در مورد این فایل بظاهر بی ارزش صفر کیلوبایتی توضیحاتی بدهم .
با استفاده از این فایل میتوانید پیغامهای خطایی که ظاهر میشود را تغییر دهید یا اینکه صفحه را بدون استفاده از redirector کنترل پنل redirect کنید یا اینکه اجازه لیست گرفتن از دایرکتوری خاصی از وبسایتتون رو محدود کنید .
قبل از شروع کار مطمئن شوید که ادیتور شما خاصیت word wrap را غیر فعال کرده است اگر نه خودتان آنرا غیرفعال کنید .
فایل .htaccess در دایرکتوری اصلی وبسایت شما یا سابدایرکتوری شما قرار دارد دستوراتی که در این فایل قرار میگیرد نه تنها دایرکتوری جاری را تحت تاثیر خود قرار میدهد بلکه کلیه زیردایرکتوریهای خود را نیز در بر میگیرد . بنابراین اگر از این فایل برروی دایرکتوری اصلی خودتان استفاده کنید تمامی سایت را در برمیگیرد . در ضمن میتوانید این فایل را در هر دایرکتوری که خواستید نیز ایجاد کنید تا محدوده کنترل در دست خودتان باشد . اگر با CSS کار کرده باشید کار کردن با این فایل هم تقریبا مشابه همان است و برای افرادی که با ان اشنایی دارند اسانتر است به هر حال هر فایلی که در دایرکتوری ویژه ای قرار دارد به نزدیکترین فایل htaccess خود مرتبط میشود و ان htaccess ان فایل را کنترل میکند .
برای ساختن این فایل هیچ نیازی به نرم افزار یا سخت افزار ویژه ای ندارید تنها به یک notepad یا هر پردازنده متنی دیگری نیازمندید .
برای ساختن این فایل که نامی ندارد و فقط هشت حرف برای نوع فرمت ان در نظر گرفته شده است “.htaccess” وقتی میخواهید این فایل را در پردازنده متنی خود ذخیره کنید نام فایل به این صورت ذخیره میشود .htaccess.txt
برای اینکه چنین اتفاقی نیفتد کافیست از منوی file گزینه save as… را انتخاب کنید در file type گزینه all files را انتخاب کنید و سپس در file name تایپ کنید “.htaccess” دات اچ تی اکسس را درون دو کوتیشن بگذارید اگر نتوانستید این کار را بکنید بعدا میتوانید از طریق کنترل پنل یا نرم افزار ftp خود نام فایل را عوض کنید . در مورد استفاده از نرم افزارهای ftp بگویم که همانطور که میدانید اینگونه نرم افزارها برای اسودگی اتصال به وبسرورتان میباشد که فایلها را در سه نوع upload میکند که سه گزینه Auto , binary, ASCII وقتی این فایل را با ftp اپلود میکنید یادتان باشد نرم افزار شما در حالت ASCII باشد . در ضمن یک مطلب دیگر هم در این مورد که باید CHMOD که مخفف Change MODe میباشد را برای این فایل عوض کنید پرمیشن این فایل باید 644 باشد یا RW-R—R— که این عمل هم برای افزایش امنیت میباشد که خوشبختانه همگی اشنایی با ان را دارید اما شاید بعدا بیشتر در مورد permissionها توضیح دادم .
این فایل به شما اجازه میدهد که شما کاربران و ویزیتورهای خودتان را از صفحه ای به صفحه دیگر منتقل کنید حتما شده است که بخواهید این کاررا انجام دهید مثلا در مورد خود من شما از parsx.com به weblog.parsx.com میروید البته من از این روش استفاده نکرده ام اما دلایل دیگری نیز میتواند عامل شود که شما از این ریدایرکت استفاده کنید شاید کاربر شما اشتباها ادرس صفحه ای از وبسایت شما را وارد کند یا اینکه شاید لینکی در وبسایت شما بنا به دلیلی شکسته شده باشد و از بین رفته باشد و ان صفحه پاک شده باشد به جای اینکه کاربر شما هیچ چیزی نبیند میتوانید انرا به صفحه اصلی سایت بسته به سلیقه خودتان منتقلش کنید . برای مثال فرض کنید کاربری با یک پیغام خطا مواجه شد برای آنکه او را به صفحه دیگری منتقل کنید باید به این صورت در فایل بنویسید :
ErrorDocument errornumber /filename.html
به جای errornumber شماره خطا را مینویسید اصولا خطای 404 زیاد اتفاق میفتد بنابراین میتوانید شماره 404 را بنویسید .
اگر خواستید تمامی پیغام خطاها را به فولدر خاصی ببرید به اینصورت عمل کنید :
ErrorDocument 404 /errorpages/notfound.html
در مورد شماره پیغام خطاها هم کمی بگویم :
400این پیغام اصولا زمانی ظاهر میشود که کاربر ادرس اشتباهی رفته باشد.
401وقتی کاربر به دایرکتوری و یا جایی میرود که اجازه ورود به انرا ندارد.
403وقتی فایل طوری تنظیم شده است که کاربر اجازه دسترسی به ان را ندارد.
404 not found.
500internal server error اشکال عموما از اسکریپتهای داخلیست .
باز هم پیغام خطا داریم که زیاد به درد نمیخورد .
کاربرد دیگر این فایل استفاده از رمز عبور است که البته پیکر بندی ان کمی سخت تر از تنظیمات پیامهای خطاست .
ابتدا فایلی به این نام ایجاد کنید .htpasswd این فایل هم خصوصیاتی چون فایل .htaccess دارد این فایل حاوی نامهای کاربری و کلمههای عبور . که بصورت زیر انها را تعیین میکنید در این فایل
Username:password
Username:password
Username:password
حواستان باشد که هر کدام در یک خط باشند و همچنین اشتباها فضای space در اخر خطها وارد نکنید . در ضمن برای نامهای کاربری که مشکلی پیش نمیاید اما برای کلمههای عبور برای افزایش امنیت باید از نرم افزارهایی که انها را تبدیل میکنند استفاده کنید . که بعدا کمی در این مورد توضیح خواهم داد .
یادتان باشد که این فایل را در فولدرهای بالایی www یا public_html بگذارید یعنی در فولدر main .
حال برای انکه مشخص کنید کدام بخش از سایت یا کدام دایرکتوری شامل رمز عبور بشوند باید به این صورت عمل کنید در فایل htaccess خطوط زیر را اضافه کنید.
AuthUserFile /home/pathto/.htpasswd
AuthType Basic
AuthName "Secret Place"
<LIMIT GET POST>
require valid-user
</LIMIT>
اگر خواستید در یک فولدر تنها از یک فایل محافظت کنید و عملیات پسورد گذاری تنها برروی یک فایل انجام شود دستورات زیر را در فایل وارد کنید .
<files "filename.cgi">
AuthUserFile /home/pathto/.htpasswd
AuthType Basic
AuthName "Secret Place"
require valid-user
</files>
<files ".htaccess">
order allow,deny
deny from all
AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexed FollowSymLinks Includes
بنابراین شما خودتان بدون نیاز به درخواست از ادمین سرور توانستید SSI را فعال کنید .
اگر هم دوست دارید فایلهای SSI بصورت جداگانه از فایلهای html نباشند میتوانید خطوط زیر را اضافه کنید :
AddType text/html .shtml .html . htm
AddHandler server-prased .shtml .html .htm
Options Indexes FollowSymLinks Includes
قطع دسترسی از طریق IP
با این روش شما میتوانید بازه خاصی از آدرس IP یا IP خاصی از فرد خاصی را اضافه کنید تا ان فرد صاحب IP نتواند وارد صفحه خاص یا کل وبسایت شود . البته در کنترل پنلها اصولا این گزینه به صورت گرافیکی هست اما توجه کنید که اگر در انجا به این کار اقدام کنید فرد مورد نظر از کل سایت محروم خواهد شد اما با استفاده از این عمل میتوانید IP خاصی را از صفحه خاصی محروم کنید . مثلا فرض کنید ادرس گوگل بت رو بگذاریم تا نتواند وارد صفحه خاصی شود .
بنابراین خطوط زیر را اضافه کنید :
Order allow,deny
Deny from ipaddress
Allow from all
خط اول میگوید که شما میخواهید چکار کنید و خط دوم میگوید که ادرس مشخص شده را ممنوع کند . البته میدانید که هر فرد با هر قطع ارتباط از اینترنت مخصوصا سرویسهای تلفنی بعد از هر بار اتصال ادرس ایپی انها عوض میشود یعنی 3 رقم اخر که برای اینکه کل 256 ادرس را ممنوع کنید کافیست ارقام اخری را ننویسید .
خط اخر هم به دیگران اجازه میدهد که وارد سایت شوند . در ضمن شما میتوانید نام دامنه را نیز ممنوع کنید به این صورت که به جای ادرس ای پی بنویسید : .parsx.com
وقتی کاربر سعی در ورود به صقحه ویژه که ممنوع شده است را دارد پیغام خطای 403 را میبیند . اگر میخواهید مثلا دایرکتوری خاصی را از دسترسی همه ممنوع کنید اما اسکریپتها و دیگر اجزایی که به فایل نیاز دارند بتوانند به ان دسترسی پیدا کنند کافیست خط deny from all را اضافه کنید .
عوض کردن ایندکس فولدری خاص
اکثر میزبانهای وب فایلی که وظیفه لود شدن در هنگام باز کردن دایرکتوری خاصی را دارد با نام index قرار میدهند که با استفاده از htaccess میتوانید انرا عوض کنید . خط زیر را به فایل اضافه کنید :
DirectoryIndex filename.html
Redirect توسط htaccess
حتما میدانید که راههای زیادی برای ریدایرکت کردن فایلی خاص به فایل دیگر وجود دارد اما بهترین کار همین است که میگویم
در فایل خط زیر را وارد کنید :
Redirect /OldDir/OldFile.html http://www.domainname.com/newdir
Redirect oldlocation newlocation
مخفی کردن محتویات دایرکتوری:
شاید درون فولدرتان فایلی نداشته باشید که لود شود بنابراین لیست تمامی فایلهای فولدر شما نمایان میشود که این اصولا از لحاظ امنیتی هم مناسب نیست و اگر یادتان باشد در مطلبی که در مورد ساخت سایت در ویندوز 2003 دادم گزینه ای داشتیم برای اینکه این فایلها لیست نشوند همچنین در کنترل پنل هم چنین گزینه ای داریم اما خوب ان هم به صورت کلی در سایت ظاهر میشود . به هر حال میتوانید خط زیر را وارد کنید :
Options -Indexes
IndexIgnore
Options +Indexes
اگر هم میخواهید فایلها لیست شوند اما گروه خاصی از انها مثلا عکسها لیست نشوند به صورت زیر عمل کنید :
IndexIgnore *.gif *.jpg
AddType application/x-shockwave-flash swfAddtype
میدانید که هر فایلی که از سرور سایت شما بارگذاری میشود در پهنای باند شما موثر است حال فرض کنید شما فایلی مثلا عکسی یا موسیقی برای دانلود در سایت گذاشته اید ! خوب بالطبع شما با استفاده از فرمول و محاسباتی که در ذهن خود انجام داده اید و نسبت به تعداد کاربرانتان سنجیده اید که با پهنای باندتان مطابقت داشته باشد اما کافیست سایتهای دیگری از فایل شما مثلا یک عکس شما استفاده کنند و عکس شما را در سایت خود قرار دهند و ادرس عکس ادرس همان عکسی باشد که در سایت شما قرار دارد بنابراین از پهنای باند شما برای بار گذاری عکس استفاده میشود لذا انروزی که پهنای باند شما از حد خود میگذرد شما باید هزینه کنید که باز هم پهنای باند بخرید در صورتی که میتوانید با استفاده از این فایل از انجام چنین کاری ممانعت کنید !منتهی قبلش باید توجه داشته باشید که ایا هاست سرور شما از mod_rewrite پشتیبانی میکند یا خیر ؟!
اگر نمیکند این گزینه برای شما فایده ای نخواهد داشت و نمیتوانید با این کار مبادرت ورزید .
به فولدری که ان فایل یا مجموعه عکسهای شما قرار دارد بروید و در فایل .htaccess ان دایرکتوری خطوط زیر را اضافه کنید
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.mydomain.com/badimage.gif [R,L]
به جای mydomain نام دامنه خودتان و ادرس عکس خودتان رابه جای ادرس فوق بگذارید .
با .htaccess قلب وبسایت خود را تحت کنترل بگیرید
اگر از وبسرور آپاچی برای وبسایت خود استفاده میکنید، دیگر نیازی نیست برای هر مشکل جزئی و کوچک، به وبمستر هاستینگتان تماس بگیرید. با یادگیری قابلیتهای مهم فایل .htaccess، میتوانید کنترل کامل وبسایت خود را برعهده بگیرید.
در هنگام استفاده از فایل .htaccess، دانستن سه نکته از اهمیت بهسزایی برخوردار است:
نکته اول: فایل .htaccess را میبایست به صورت ASCII آپلود کرده و مجوز دسترسی به آن را بر روی 644 (یا rw-r--r--) تنظیم نمایید.
نکته دوم: فایل .htaccess را میتوانید به پوشههای مختلفی اعمال نمایید. به عنوان مثال اگر آن را بر روی root آپلود نمایید، تنظیمات آن به کل وبسایت اعمال خواهد شد و اگر آن را درون پوشهای نظیر images/ آپلود نمایید، تنظیمات آن به پوشه images و زیرپوشههای آن اعمال خواهد شد.
نکته سوم: هر htaccess را میبایست درون یک خط تایپ نمایید. یعنی در انتهای هر دستور، میبایست یکبار کلید Enter را فشار دهید.
جلوگیری از لیست شدن محتویات یک پوشه
فرض کنید پوشهای از تصاویر دارید و نمیخواهید که افراد غریبه، محتویان این پوشه را دیده و آنها را تماشا کنند. برای این کار، سه راه وجود دارد:
1- ساخت یک صفحه index و قرار دادن آن در پوشه مورد نظر
2- استفاده از فایل .htaccess
3- استفاده از فایلهای HEADER و README
از آنجا که بحث ما در مورد فایل .htaccess میباشد، راه دوم را مورد بررسی قرار میدهیم. برای این کار میبایست از فرمان IndexIgnore استفاده نمایید:
IndexIgnore *
IndexIgnore *.gif *.jpg
حال فرض کنید که سرور شما، به طور پیشفرض، از لیستشدن پوشهها جلوگیری کرده است و شما میخواهید آن را تغییر دهید. برای این کار میتوانید از دستور زیر استفاده کنید:
Options +Indexes
به طور کلی، تمامی وب سرورها از روی قانون خاصی صفحات وب را نشان میدهند. برای آنکه صفحات وب تنها به یک پسوند منحصربهفرد نظیر .htm ختم نمیشوند و انواع واقسام پسوندهای مختلف، برای صفحات وب وجود دارد.
حال فرض کنید که وبسرور شما، ابتدا فایل index.html را نشان میدهد و در صورت نبود آن، فایلهای index.htm، index.php و ... شما میخواهید این روند را تغییر داده و فایل index.php را در اولویت قرار دهید. بدین منظور میبایست از دستور DirectoryIndex استفاده نمایید:
DirectoryIndex index.php index.cgi index.pl default.htm
کد بالا ابتدا به دنبال فایل index.php گشته و در صورت پیدا کردن آن، آن را به عنوان صفحه وب پیشفرض نمایش میدهد. اگر فایل index.php پیدا نشد، سرور به دنبال فایل بعدی که index.cgi میباشد گشته و همین روال، ادامه پیدا میکند. دقت داشته باشید که شما حتما مجبور به استفاده از index برای نام فایل نیستید و از هر اسم دیگری نیز، میتوانید استفاده کنید.
Redirects
شاید تا به حال برایتان اتفاق افتاده باشد که به وبسایتی مراجعه کرده باشید و سپس متوجه شوید که آدرس وبسایت به طور اتوماتیک عوض شده و در واقع شما به آدرس دیگری ارجاع دادهشدهاید. برای اینکار میتوانید از دستور Redirect استفاده نمایید:
Redirect /olddirectory/oldfile.html http://yoursite.com/newdirectory/newfile.html
Redirect /olddirectory http://yoursite.com/newdirectory/
Hot Linkin
فرض کنید دارای یک سایت عکاسی هستید که روزانه تعداد زیادی عکس در زمینههای مختلف را در آن آپلود میکنید و در اختیار عموم قرار میدهید. حال فرد دیگری از عکسهای شما در وبسایت خود استفاده میکند. این کار نه تنها برای شما هیچ سودی نخواهد داشت، بلکه از پهنای باند شما (BW) خواهد کاست و در نتیجه به زحمت و هزینه خواهید افتاد.
همچنین شما نمیتوانید بفهمید که چه وبسایتهایی از عکسهای شما استفاده کردهاند تا به آنها اخطار دهید.
برای جلوگیری از چنین عملی، میتوانید Hot Linkin را به وسیله mod_rewrite غیر فعال کنید:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.mydomain.com/nasty.gif [R,L]
تذکر: mod_rewrite یکی از قابلیتهای وحشتناک بهدردبخور آپاچی میباشد که توضیح مفصل آن، احتیاج به یک مقاله صدصفحهای دارد.
صفحات خطا
به احتمال قوی با خطای معروف 404 در اینترنت سروکار داشتهاید. خطایی که اعصاب آدم را بههم میزند. این خطا در صورتی ظاهر میشود که صفحه مورد نظر شما (به هر دلیل)، در دسترس نباشد. یعنی در واقع صفحهای وجود نداشته باشد و شما آن را از مرورگر بخواهید.
وبسایتهای حرفهای و آنهایی که خواهان جذب مخاطب برای وبسایتهایشان هستند، این صفحات خطا را (که هر فرد با دیدن آنها سریعا دکمه close را میزند) سفارشی میکنند. یعنی به جای آن خطای 404 تکراری، یک صفحه خطای مناسب (در فرمت وبسایت) میگذارند و به مخاطب راهنماییهایی میدهند.
معمولا در این نوع صفحات خطا، بیوگرافی کوچکی از وبسایت و زمینه کاری آن نوشته شده و سپس مخاطب را (به وسیله لینک و یا اتوماتیک) به صفحه اصلی وبسایت ارجاع میدهند.
برای ساخت صفحات خطا (که تعداد آنها کم هم نیست!)، و ارجاع مخاطبین درصورت برخورد به صفحات خطای مختلف به آنها، میتوانید از کد زیر استفاده کنید:
ErrorDocument code /directory/filename.ext
ErrorDocument 404 /notfound.html
۹۲/۰۸/۱۹