در این مطلب نگاهی به فایل Htaccess خواهیم داشت و آن را بصورت کامل و نکته به نکته وصف خواهیم کرد. و در آخر نیز یک وب سایت ارائه دهنده هاست و دامنه جهت بهینه سازی وب سایت شما معرفی می نماییم. اما در مرحله اول خواهیم گفت که htaccess چیست؟فایل htaccess یک فایل پیکربندی و تنظیماتی در وب سرورهای apache میباشد که، زمانی که یک فایل htaccess را در یک دایرکتوری قرار میدهیم این فایل توسط وب سرور apache شناسایی و اجرا میشود.این فایل قادر به تغییر تنظیمات apache وب سرور میباشد که امکانی را در apache فعال یا غیر فعال کند، امکاناتی نظیر تغییر مسیر دادن کاربر (redirect)، تعیین صفحهی 404، پسورد گذاشتن بر روی یه شاخه از سایت، بلاک کردن ip و … م یباشد.
جهت دیدن آموزش کامل Htaccess و نکته های آن به ادامه مطلب مراجعه فرمایید
[alert color=”blue” icon=””]
توجه!!! جهت آزمون و خطا کردن این دستورات در ابتدا میبایست وارد هاست وب سایت خود شوید و فایل htaccess را توسط ادیتور هاست باز نمایید و دستورات مورد نظر را در آن قرار دهید و خروجی آن را در سایت خود مشاهده کنید.
[/alert]mod_rewrite را می توانید از درون فایل htaccess خود اجرا کنید برای اینکه ماژول mod_rewrite را آماده استفاده کنید
از کد زیر در فایل htaccess استفاده کنید. بهترین مکان برای قرار دادن این کد در همان سطر اول htaccess می باشد.
RewriteEngine on
فراموش نکنید که htaccess به بزرگی و کوچکی حروف حساس است
و اینکه این کد را در خط اول همه فایل های htaccess ای که در آن ها از mod_rewrite استفاده می کنید قرار دهید.
================================
۲- حالت نمونه کد های mod_rewrite
حالت ساده و نمونه mod_rewrite بصورت زیر است
[p] RewriteRule Pattern Substitution [Flag(s)] [/p]================================
3 – یک انتقال ساده
اگر خواستید یه انتقال ساده از یک url به یک url دیگر داشته باشید می توانید از کد زیر استفاده کنید
[p] RewriteRule ^fileone.html$ filetwo.html[/p]
این کد باعث میشه که اگر سرور درخواستی در مورد بازکردن فایل fileone.html دریافت کرد فایل filetwo.html باز شود.
================================
۴ – ممنوع الورود کردن یک آی پی خاص
اگر خواستید از ورود شخصی با آی پی خاص به وبسایتتان جلوگیری کنید می توانید از کد زیر استفاده کنید
RewriteCond %{REMOTE_ADDR} ^(A.B.C.D)$ RewriteRule ^/* http: //www.domain.com/sorry.html [L] |
به جای A B C D اجزای چهارگانه IP مورد نظر رو وارد کنید و به جایhttp://www.domain.com/sorry.html آدرس مورد نظر که مثلا می تونه یک صفحه حاوی پیغام هشدار باشه رو وارد کنید
================================
۶- خلاص شدن از دست Query Strings
اگر بیشتر url ها در وبسایت شما چیزی مانند
http://www.domain.com/home.html?example=12345abcd
هست پس باید یه فکری برای نجات دادن خودتون بکنید چون در این صورت وبسایت شما بدرستی در سایت هایی نظیر گوگل ذخیره نمیشه و حتی کاربرانتون اگر بخوان آدرس یک صفحه رو توی ذهنشون داشته باشند تا جای دیگر از اون استفاده کنند این عمل براشون دشوار میشه . برای اینکه از دست اینجور آدرس ها خلاص شید از کد زیر استفاده کنید
RewriteCond %{QUERY_STRING} ^id=456&lid=789.* [NC] RewriteRule (.*) http: //www.domain.com/$1? [R=301] |
با این کد نه تنها از دست query ه راحت میشید بلکه از دست اون علامت سوال هم را حت میشید .
این کار یه جنبه امنیتی هم داره و اون جلوگیری از هک شدن وبسایت از طریق sql injection هست .
================================
۷- تصویر پیشفرض
با استفاده از این کد اگر یکی از تصاویر وبسایتتون دچار مشکلی شد و به هر دلیلی لود نشد تصویری که اینجا معرفی میکنید جایگزین اون میشه . با استفاده این کد ظاهری حرفه ای تر به وبسایتتون بدین
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^images/.*.jpg$ /images/ default .jpg [L] |
================================
۸ – جلوگیری از hotlinking
سارقان مطلب و bandwidth با کپی کردن لینک فایل های درون سرور شما ( مثالا تصاویر ، موزیک ها ، کلیپ های فلش و …) به پیشرفت سایت خودشان کمک می کنند و به جای آن از پهنای بایند شما استفاده می کنند که می تواند باعث کندی لود شدن صفحات سایت شما و یا حتی در برخی موارد تمام شدن پهنا باند ماهیانه شما بشه . برای اینکه جلوی این افراد رو بگیرید از کد زیر استفاده کنید .
RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http: //(www.)?domain.com/ .*$ [NC] RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L] |
در کد بالا domain.com رو با دامین سایت خودتون عوض کنید
================================
۹ – منتقل کردن از چند دامین به یک دامین دیگر
RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http: //(www.)?domain.com/ .*$ [NC] RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L] |
اگر از چند دامین برای آدرس دهی با سایتتان استفاده می کنید این امر ممکن است که هر دو دامین را به یک دامین دیگر روی سرور بفرستید
فقط به جای http://www.domain.net و domain.net دو دامین خودتون رو بنویسید و به جای http://domain.net آدرس جدید رو بنویسید
================================
۱۰- فراموش نکنید که :
* mod_rewrite از درون فایل htaccess اجرا می شود
* دستورات در فایل htaccess به حروف بزرگ و کوچک حساسند
* همیشه قبل از دست کاری فایل htaccess از اون نسخه پشتیبان تهیه کنید
htaccess چیست ؟یک فایل بسیار ساده با محیط تکست .چگونه میتوان آنرا تولید کرد ؟برای ساختن این فایل تنها کافیست یک محیط تکست ادیتور داشته باشید . مثل notepadاین فایل در کجا هست ؟این فایل در دایرکتوری اصلی وبسایت شما قرار دارد و هر دایرکتوری دیگری که بخواهید .وظیفه این فایل چیست ؟تقریبا تمامی محدودیتهای اعمالی بر آن دایرکتوری را بر عهده داردو میتواند پیغامهای خطا را مدیریت کند و چندین وظیفه دیگر که اگر کمی در تنظیمات آن قصور و غفلت کنیدشاید سایت شما بار گذاری نشود .تمامیهاستها از این نوع گونه فایل حمایت میکنند ؟این بستگی به میزبان شما دارد اصولا از این فایل حمایت میکنند .
اما اگر هم میخواهید مطمئن شوید میتوانید از وبمستر سرور خود بپرسید .
قبل از شروع کار حتما یک نسخه بک آپ از فایلی که هم اکنون در دایرکتوری شما قرار دارد بگیرید
قبل از شروع آموزش بگویم که این آموزش مختص صاحبان وب سایتها هست
و کاربرانی که دارای سایت اختصاصی نیستند نمیتوانند استفاده چندانی از این مطلب بکنند
اما خوب برای اطلاعات عمومی بد نیست به ادامه ان بپردازید .
فکر کنم تقریبا ۹۰% صاحبان وب این فایل را دیده باشند و بدون هیچ شکی در مورد ان از کنار ان گذشته باشند
برای همین هم احتمال میدهم یکی از موضوعاتی که در موردش کمتر مقاله ای پیدا میکنید همین مطلب باشد .
به هر حال تصمیم گرفته ام کمی در مورد این فایل بظاهر بی ارزش صفر کیلوبایتی توضیحاتی بدهم .
بعضی وبسرورها این فایل را دارند اما داخلش هیچی نیست که دیگر نیازی به پشتیبان گیری نیست .
با استفاده از این فایل میتوانید پیغامهای خطایی که ظاهر میشود را تغییر دهید
یا اینکه صفحه را بدون استفاده از 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 میباشد را برای این فایل عوض کنید
پرمیشن این فایل باید ۶۴۴ باشد یا RW-R—R— که این عمل هم برای افزایش امنیت میباشد
که خوشبختانه همگی اشنایی با ان را دارید اما شاید بعدا بیشتر در مورد permissionها توضیح دادم .
این فایل به شما اجازه میدهد که شما کاربران و ویزیتورهای خودتان را از صفحه ای به صفحه دیگر منتقل کنید حتما شده است
که بخواهید این کاررا انجام دهید مثلا در مورد خود من شما از parsx.com به weblog.parsx.com میروید البته من از این روش استفاده نکرده ام
اما دلایل دیگری نیز میتواند عامل شود که شما از این ریدایرکت استفاده کنید
شاید کاربر شما اشتباها ادرس صفحه ای از وبسایت شما را وارد کند یا اینکه شاید لینکی در وبسایت شما بنا به دلیلی شکسته شده باشد
و از بین رفته باشد و ان صفحه پاک شده باشد به جای اینکه کاربر شما هیچ چیزی نبیند میتوانید
انرا به صفحه اصلی سایت بسته به سلیقه خودتان منتقلش کنید .
برای مثال فرض کنید کاربری با یک پیغام خطا مواجه شد برای آنکه او را به صفحه دیگری منتقل کنید باید به این صورت در فایل بنویسید :
ErrorDocument errornumber /filename.html
به جای errornumber شماره خطا را مینویسید اصولا خطای ۴۰۴ زیاد اتفاق میفتد بنابراین میتوانید شماره ۴۰۴ را بنویسید .
اگر خواستید تمامی پیغام خطاها را به فولدر خاصی ببرید به اینصورت عمل کنید :
ErrorDocument 404 /errorpages/notfound.html
در مورد شماره پیغام خطاها هم کمی بگویم :
۴۰۰این پیغام اصولا زمانی ظاهر میشود که کاربر ادرس اشتباهی رفته باشد.
۴۰۱وقتی کاربر به دایرکتوری و یا جایی میرود که اجازه ورود به انرا ندارد.
۴۰۳وقتی فایل طوری تنظیم شده است که کاربر اجازه دسترسی به ان را ندارد.
۴۰۴ 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>
برای محافظت از خود فایل .htaccess نیز میتوانید خط زیر را وارد کنید :
<files “.htaccess”>
order allow,deny
deny from all
</files>
اگر هاست شما از این فایل پشتیبانی میکند اما از SSI پشتیبانی نمیکند
کافیست خطوط زیر را وارد کنید تا از SSI هم پشتیبانی شود .
AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexed FollowSymLinks Includes
خط اول بیان میکند که کلیه فایلها با پسوند shtml دارا صحت هستند
خط دوم یک handler اضافه میکند خط سوم باعث میشود سرور این فایلها را اجرا کند .
بنابراین شما خودتان بدون نیاز به درخواست از ادمین سرور توانستید SSI را فعال کنید .
اگر هم دوست دارید فایلهای SSI بصورت جداگانه از فایلهای html نباشند میتوانید خطوط زیر را اضافه کنید :
AddType text/html .shtml .html . htm
AddHandler server-prased .shtml .html .htm
Options Indexes FollowSymLinks Includes
این خطوط باعث میشوند که کلیه فایلها با پسوند html نیز به سرور برای اجرا شدن منتقل شوند
تا اگر کدی که برای SSI باشد داشته باشد را اجرا کند و سپس صفحه شروع به بارگذاری کند .
قطع دسترسی از طریق IP
با این روش شما میتوانید بازه خاصی از آدرس IP یا IP خاصی از فرد خاصی را اضافه کنید
تا ان فرد صاحب IP نتواند وارد صفحه خاص یا کل وبسایت شود .
البته در کنترل پنلها اصولا این گزینه به صورت گرافیکی هست
اما توجه کنید که اگر در انجا به این کار اقدام کنید فرد مورد نظر از کل سایت محروم خواهد شد
اما با استفاده از این عمل میتوانید IP خاصی را از صفحه خاصی محروم کنید .
مثلا فرض کنید ادرس گوگل بت رو بگذاریم تا نتواند وارد صفحه خاصی شود .
بنابراین خطوط زیر را اضافه کنید :
Order allow,deny
Deny from ipaddress
Allow from all
به جای ipaddress میتوانید ادرس ایپی را بنویسید مثل : ۱۷۲٫۱۶٫۲۰۴٫۱۰۰
خط اول میگوید که شما میخواهید چکار کنید و خط دوم میگوید که ادرس مشخص شده را ممنوع کند .
البته میدانید که هر فرد با هر قطع ارتباط از اینترنت مخصوصا سرویسهای تلفنی بعد از هر بار اتصال ادرس ایپی انها عوض میشود
یعنی ۳ رقم اخر که برای اینکه کل ۲۵۶ ادرس را ممنوع کنید کافیست ارقام اخری را ننویسید .
خط اخر هم به دیگران اجازه میدهد که وارد سایت شوند .
در ضمن شما میتوانید نام دامنه را نیز ممنوع کنید به این صورت که به جای ادرس ای پی بنویسید : .parsx.com
وقتی کاربر سعی در ورود به صقحه ویژه که ممنوع شده است را دارد پیغام خطای ۴۰۳ را میبیند .
اگر میخواهید مثلا دایرکتوری خاصی را از دسترسی همه ممنوع کنید
اما اسکریپتها و دیگر اجزایی که به فایل نیاز دارند بتوانند به ان دسترسی پیدا کنند کافیست خط deny from all را اضافه کنید .
عوض کردن ایندکس فولدری خاص
اکثر میزبانهای وب فایلی که وظیفه لود شدن در هنگام باز کردن دایرکتوری خاصی را دارد
با نام index قرار میدهند که با استفاده از htaccess میتوانید انرا عوض کنید . خط زیر را به فایل اضافه کنید :
DirectoryIndex filename.html
حتما دیده اید که اگر فایل index.html در دایرکتوری نبود سرور فایل دیگری مثلا index.php را اجرا میکند
روش به اینصورت است که در دستور فوق بعد از filename.html با یک فضای خالی نامهای دیگر را وارد میکنید .
بنابراین سرور در دایرکتوری ویژه ابتدا به دنبال فایل اولی و سپس به دنبال فایل دومی و به همین ترتیب جستجو میکند .
اگر هم هیچ یک از فایلها پیدا نشد پیغام خطای ۴۰۴ ظاهر میشود .
Redirec توسط htaccess
حتما میدانید که راههای زیادی برای ریدایرکت کردن فایلی خاص به فایل دیگر وجود دارد اما بهترین کار همین است که میگویم
در فایل خط زیر را وارد کنید :
Redirect /OldDir/OldFile.html http://www.domainname.com/newdir
بنابراین دستور به شرح زیر است
Redirect oldlocation newlocation
منتهی یادتان باشد که newlocation باید نام ادرس کامل سایت باشد .
مخفی کردن محتویات دایرکتوری
شاید درون فولدرتان فایلی نداشته باشید که لود شود بنابراین لیست تمامی فایلهای فولدر شما نمایان میشود
که این اصولا از لحاظ امنیتی هم مناسب نیست و اگر یادتان باشد
در مطلبی که در مورد ساخت سایت در ویندوز ۲۰۰۳ دادم گزینه ای داشتیم برای اینکه این فایلها لیست نشوند
همچنین در کنترل پنل هم چنین گزینه ای داریم اما خوب ان هم به صورت کلی در سایت ظاهر میشود .
به هر حال میتوانید خط زیر را وارد کنید :
Options -Indexes
یا خط زیر را وارد کنید
IndexIgnore *
اما عکس این عمل نیز میتواند اتفاق بیفتد یعنی به صورت پیشفرض در سرور تنظیم شده است
که فایلها لیست نشودند اما شما میتوانید این گزینه را با خط زیر غیزفعال کنید :
Options +Indexes
اگر هم میخواهید فایلها لیست شوند اما گروه خاصی از انها مثلا عکسها لیست نشوند به صورت زیر عمل کنید :
IndexIgnore *.gif *.jpg
بعضی سرورها بعضی از فایلها را نمیشناسند با استفاده از این فایل میتوانید خط زیر را وارد کنید
تا انها را بشناسد مثلا برای فایلهای فلش میتوانید دستور زیر را وارد کنید
AddType application/x-shockwave-flash swf
Addtype به فایل اعلان میکند که باید نام فایلی جدید اعلان شود.
میدانید که هر فایلی که از سرور سایت شما بارگذاری میشود در پهنای باند شما موثر است
حال فرض کنید شما فایلی مثلا عکسی یا موسیقی برای دانلود در سایت گذاشته اید !
خوب بالطبع شما با استفاده از فرمول و محاسباتی که در ذهن خود انجام داده اید
و نسبت به تعداد کاربرانتان سنجیده اید که با پهنای باندتان مطابقت داشته باشد
اما کافیست سایتهای دیگری از فایل شما مثلا یک عکس شما استفاده کنند و عکس شما را در سایت خود قرار دهند
و ادرس عکس ادرس همان عکسی باشد که در سایت شما قرار دارد
بنابراین از پهنای باند شما برای بار گذاری عکس استفاده میشود
لذا انروزی که پهنای باند شما از حد خود میگذرد شما باید هزینه کنید
که باز هم پهنای باند بخرید در صورتی که میتوانید با استفاده از این فایل از انجام چنین کاری ممانعت کنید !منتهی قبلش باید توجه داشته باشیده
ایا هاست سرور شما از mod_rewrite پشتیبانی میکند یا خیر ؟!
اگر نمیکند این گزینه برای شما فایده ای نخواهد داشت و نمیتوانید با این کار مبادرت ورزید .
به فولدری که ان فایل یا مجموعه عکسهای شما قرار دارد بروید و در فایل .htaccess ان دایرکتوری خطوط زیر را اضافه کنید
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ – [F]
به جای mydomain.com نام دامنه خودتان را بنویسید مثلا parsx.com دستور فوق باعث میشود
فایلهای با پسوند gif jpg نتوانند در سایتهای دیگر نمایش داده شوند اما شما میتوانید کار دیگری نیز بکنید
مثلا بگذارید دیگران از عکسهای شما استفاده کنند و سپس طی یک حرکت ناجوانمردانه فایل htaccess را گونه ای تعویض کنید
که تمامی عکسها و فایلها با عکس دیگری نمایش داده شوند مثلا عکسی بگذارید که ادرس سایت خودتان را بگذارید .
مثلا freeservers چنین کاری کرده است .
اگر به عکس سایتهایش لینک دهید نام سایت خودش نمایش داده میشود .
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 آپلود کرده و مجوز دسترسی به آن را بر روی ۶۴۴ (یا rw-r–r–) تنظیم نمایید.
نکته دوم: فایل .htaccess را میتوانید به پوشههای مختلفی اعمال نمایید.
به عنوان مثال اگر آن را بر روی root آپلود نمایید، تنظیمات آن به کل وبسایت اعمال خواهد شد
و اگر آن را درون پوشهای نظیر images/ آپلود نمایید، تنظیمات آن به پوشه images و زیرپوشههای آن اعمال خواهد شد.
نکته سوم: هر htaccess را میبایست درون یک خط تایپ نمایید. یعنی در انتهای هر دستور، میبایست یکبار کلید Enter را فشار دهید.
جلوگیری از لیست شدن محتویات یک پوشه :
فرض کنید پوشهای از تصاویر دارید و نمیخواهید که افراد غریبه، محتویان این پوشه را دیده و آنها را تماشا کنند. برای این کار، سه راه وجود دارد:
۱- ساخت یک صفحه index و قرار دادن آن در پوشه مورد نظر
۲- استفاده از فایل .htaccess
3- استفاده از فایلهای HEADER و README
از آنجا که بحث ما در مورد فایل .htaccess میباشد، راه دوم را مورد بررسی قرار میدهیم.
برای این کار میبایست از فرمان IndexIgnore استفاده نمایید:
IndexIgnore *
این کد از لیستشدن تمامی فایلهای پوشه مورد نظر، جلوگیری میکند.
حال فرض کنید که درون پوشهای انواعواقسام فایلها نظیر فایلهای اچتیامال و تصاویر دارید
و میخواهید که فقط از لیست شدن تصاویر جلوگیری شود.
بدینمنظور میتوانید از کد زیر استفاده کنید:
IndexIgnore *.gif *.jpg
در واقع این کد از لیستشدن تمامی فایلهایی که به .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
در جامعه وبمسترها، عبارت Hot Linkin یک عبارت نفرتبرانگیز است که از آن به عنوان «نقرهداغ وبمسترها» نیز یاد میشود.
اما معنای آن چیست؟
فرض کنید دارای یک سایت عکاسی هستید که روزانه تعداد زیادی عکس در زمینههای مختلف را در آن آپلود میکنید
و در اختیار عموم قرار میدهید. حال فرد دیگری از عکسهای شما در وبسایت خود استفاده میکند.
این کار نه تنها برای شما هیچ سودی نخواهد داشت، بلکه از پهنای باند شما (BW) خواهد کاست
و در نتیجه به زحمت و هزینه خواهید افتاد.
همچنین شما نمیتوانید بفهمید که چه وبسایتهایی از عکسهای شما استفاده کردهاند تا به آنها اخطار دهید.
برای جلوگیری از چنین عملی، میتوانید Hot Linkin را به وسیله mod_rewrite غیر فعال کنید:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ – [F
یادتان نرود که mydomain.com را به آدرس وبسایت خود تغییر دهید.
همچنین میتوانید کاری کنید در صورت استفاده از عکسهای سایت شما، به جای نمایش آنها، عکس مورد نظر شما نشان داده شود.
مثلا اگر سایت A از عکسهای سایت شما استفاده کرد، عکسی را نمایش دهید که تبلیغ سایت شما باشد.
برای اینکار میتوانید از کد زیر استفاده کنید:
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 یکی از قابلیتهای وحشتناک بهدردبخور آپاچی میباشد
که توضیح مفصل آن، احتیاج به یک مقاله صدصفحهای دارد.
صفحات خطا
به احتمال قوی با خطای معروف ۴۰۴ در اینترنت سروکار داشتهاید.
خطایی که اعصاب آدم را بههم میزند.
این خطا در صورتی ظاهر میشود که صفحه مورد نظر شما (به هر دلیل)، در دسترس نباشد.
یعنی در واقع صفحهای وجود نداشته باشد و شما آن را از مرورگر بخواهید.
وبسایتهای حرفهای و آنهایی که خواهان جذب مخاطب برای وبسایتهایشان هستند،
این صفحات خطا را (که هر فرد با دیدن آنها سریعا دکمه close را میزند) سفارشی میکنند.
یعنی به جای آن خطای ۴۰۴ تکراری، یک صفحه خطای مناسب (در فرمت وبسایت) میگذارند و به مخاطب راهنماییهایی میدهند.
معمولا در این نوع صفحات خطا، بیوگرافی کوچکی از وبسایت و زمینه کاری آن نوشته شده
و سپس مخاطب را (به وسیله لینک و یا اتوماتیک) به صفحه اصلی وبسایت ارجاع میدهند.
برای ساخت صفحات خطا (که تعداد آنها کم هم نیست!)، و ارجاع مخاطبین درصورت برخورد به صفحات خطای مختلف
به آنها، میتوانید از کد زیر استفاده کنید:
ErrorDocument code /directory/filename.ext
به عنوان مثال کد زیر، مخاطب را در صورت مواجه شدن با خطای ۴۰۴، به صفحه notfound.html ارجاع میدهد:
ErrorDocument 404 /notfound.html
پیشنهاد ما جهت خرید هاست استاندارد
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- انتشار: ۱۵ اردیبهشت ۱۳۹۱
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- رپورتاژ
- فروشگاه
- فیلم های آموزشی
- ++C
- ADO.NET
- Adobe Flash
- Ajax
- AngularJS
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- AVR
- Bootstrap
- CCNA
- CCNP
- CMD
- CSS
- Dreameaver
- EntityFramework
- Go
- HTML
- IOS
- jquery
- Linq
- Mysql
- Oracle
- PHP
- PHPMyAdmin
- Rational Rose
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- WPF
- Xml
- آموزش های پروژه محور
- اتوکد
- الگوریتم تقریبی
- امنیت
- اندروید
- اندروید استودیو
- بک ترک
- بیسیک فور اندروید
- پایتون
- جاوا
- جاوا اسکریپت
- جوملا
- دلفی
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کانستراکت
- کریستال ریپورت
- لاراول
- معماری کامپیوتر
- مهندسی اینترنت
- هوش مصنوعی
- یونیتی
- کتاب های آموزشی
- Android
- ASP.NET
- AVR
- LINQ
- php
- Workflow
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس
سلام وقتتون بخیر. ببخشید من یک دوره اموزشی تهیه کردم و سایتم با ورودپرس زبان php کدنویسی شده.
میخوام قبل از این که دوره رو در هاست آپلود کنم بدونم آیا راهی هست که کاربرها نتونن بعد از اینکه دانلود کردن در سایتشون یا جاهای دیگه اپلودش کنن؟
سلام ممنونم
براش لایسنسن بذارید
فایلی یا فولدری به نام .
htacess
در هاست بنده وجود ندارد باید چه کار بکنم
لطفا راهنمایی بفرمایید
می توانم خودم بسازم؟
سلام. باید خودتون ایجاد کنید
سلام اگر بخواهیم لینک های داخل پست رو نوفالو کنیم چه کدی استفاده کنیم لینک های خارجی و لینک های عکس را
سلام. لینک خاصی رو یا همه لینک ها رو؟
ممنون عالی بود
عالی بیود. 😉
سلام خسته نباشید
هر چند وقت یک بار ( معمولا” ماهی یک بار) سایت من به مشکل می خوره موقع باز کردن سایت کاربرها پیغام نصب ورد پرس می بینن ( منظورم همون صفحه اول برای انتخاب زبانه که برای شروع هر سایتی باید انتخاب کنیم) هر بار که با هاستینگ تماس می گیرم مشکل را حل می کنن می گن فایل htaccess را reset کردن درست شده این مشکلش از چی می تونه باشه؟ چطوری می شه یک بابر بر ای همیشه این مشکل را حل کرد؟چون من تمام پلاگین های امنیتی که فایل htaccess را دستکاری می کنن غیر فعال کردم ولی باز هم این مشکل هست
سلالم. لطفا در انجمن مطرح نمایید
بسیار مفید بود
ممنون
سلام چطوری باید ساب دومین بدم ؟؟
ممنون
سلام برای جلو گیری از دزدیدن فایل های وی پی اس چکار میشه کرد
ویندوز 2003
سلام ممنون عالی ومفیدبود
با تشکر از مدیر سایت ممنون . واقعا کامل و آموزنده بود like
ایول عالی بود ممنون
یه چیز هم لازم داشتم ممنون میشم یکی کمکم کنه
میخوام وقتی کسی وارد /chat میشه این رو نشون بده /?chat البته بدون ریدکت مثل همون ارور 404 که بدون ریدکت یه فایل رو نشون میده ممنون میشم یکی کمک کنه.
سلام
فوق العاده بود .
خسته نباشید
برای من خیلی ارزشمند بود این مطلب. ایول .