آموزش htaccess

htaccess
شبکه و امنیت آوریل 2014 29

.htaccess یک فایل مخفی که می تواند در هر فولدری باشد که عملیات های سرور مروط به آن فولرد و زیر شاخه هایش را تنظیم میکند ، مثلا میتوانید دسترسی یه سری فایل ها را محدود کنید تا از اون فایل ها محافظت بشه یا URL را تنظیم کنید و…

دقت کنید این فایل نام ندارد و این جور فایل ها در صورت وجود مخفی هستند و برای دیدنشان مثلا در سی پنل ، هنگامی که بر file manager کلیک میکنید تیک گزینه show hide fils را فعال و سپس تمام فایل های مخفی قابل رویت اند.

showfolder-filemanager

اگر قصد دارید این فایل را در پوشه ای ایجاد کنید از منوی سی پنل گزینه newfile را بزنید سپس .htaccess را وارد کنید ، دقت کنید این فایل نام ندارد و نقطه را باید در ابتدای این نام وارد کنید سپس عبارت htaccess

اگر در حال حاضر این فایل در مسیری مثل public_html موجود است قبل از هر گونه تغییر ابتدا یه نسخه کپی از آن برای بک آپ داشته باشید و اگر در حال حاضر اسکریتی درون این فایل هست کد هایی که می خواهید به آن اضافه کنید را در انتهای تمامی دستورات وارد کنید که باید در آخرین کد دکمه اینتر را بزنید و یک خط جدید ایجاد کنید و سپس کد هایی که قرار است اضافه کنید را قرار دهید.

در ادامه با سری کد هایی که می توان در این فایل اضافه کرد برای هدایت هاست آشنا میشوید.

1- جلوگیری از مرور هاست توسط شخص سوم : در حالت معمول هکر ها می توانند فایل ها و فولدر های هاست شما را ببینند و در آن مرور کنند و در این صورت شخص سوم می تواند ببیند شما از چه افزونه و قالب هایی استفاده میکنید . پیش اومده چون مدیر سایت قالب اختصای اش را در هاستش با پسوند zip گذاشته هکر هم پیداش و دانلودش کرده . برای جلوگیری از این کار کافیه کد زیر را به انتهای htaccess وارد کنید :

 

2- تغییر آدرس پیفرض index برای بارگذاری : در حالت معمول وقتی یک آدرسی را در مرورگر وارد می کنیم فایل های index.html یا index.php یا …  را بارگذاری میکند ، شما می توانید اینیشفرض را تغییر دهید ، مثلا کد زیر ابتدا دنبال فایل file.php را اجرا می کند و اگر نبود فایل file.html را اجرا میکند :

 

3- محدودیت دسترسی از طریق آی پی : با استفاده از کد زیر اعلام می کنید که فقط با آی پی 188.50.38.143 می تواند دسترسی داشته باشند :

همچنین با کد زیر اعلام کردیم که کاربر با آی پی زیر دستری نداشته باشد:

و با کد زیر اعلام می کنیم که هیچ کسی اجازه دسترسی ندارد :

 

4- ایجاد صفحه خطال به مسیر دلخواه : یکی از پر کاربرد ترین این روش ایجاد صفحه 404 برای صفحاتی که وجود ندارد است ، مثلا اگر آدرسی را وارد کرد که چنین آدرسی برای کاربر ناشناخته است به صفحه ی خاصی منتقل ود که آین مووع را اعلام کند به جای اینکه یه خطای نا مطلوب را به نمایش در بیاورد. برای این کار باید از کد زیر استفاده کرد :

که به جای erorcode شماره خطا مورد نظر را باید وارد کرد و به جای file.html آدرس فایلی که در صورت بروز آن خطا باید به آن منتقل شد . مثلا برای خطای 404 کد زیر را به فایل 404.html منتقل میکند :

 

5- قفل کردن دامنه ایت با www یا بدون www : بهتر است برای افزایش سئو دامنه تان بدون www باشد چون دامنه کوتاه تر میشود . در ثانی اگر سایت شما هم با www و هم بدون www بالا بیاید گوگل فکر میکند دو دامنه یک مطلب را منتشر مکنند و از ارزش هر دو کم میکند ؛ البته اگر در حال حاضر سایتتان در گوگل با www ایندکس شده باشد بهتر است بیخیال شوید چون ایندکس های قبلیتون از بین میره . برای اینکه دامنه تان را بدون www قفل کنید کافیست کد زیر را در htaccess قرار دهید (البته آدرس دامنه خودتا را بجای mrprogrammer.net در خط دوم و سوم وارد کنید) :

و برای قفل کردن دامنه فقط با www :

 

6- محدودیت در باز کردن فایل ها : برای حفظ امنیت و اطلاعات سایت میتوانید پسوند فایل هایی که بتوان بازشان کرد را تعیین کنیم :

در کد های بالا ما اجازه دادم فقط فایل هایی را باز کند که پسوند css , js و php دارند و در صورت درخواست سایر پسوند ها کاربر ریدایرکت میشه به پوشه deny

 

7- محافظت از خود فایل htaccess : برای جلوگیری از لو رفتن اطلاعات خود htaccess باید کد زیر را درونش قرار بدید :

 

8- محدودست در آپلود : شما میتوانید از طریق htaccess محدودیت های در بارگذاری فایل و آدرس و … بگذارید. کد زیر برای حداکثر 30 مگابات را برای آپلود مجاز میکند :

کد زیر برای ایجاد محدودیت در ارسال پست هست که حداکثر 10 مگ را برای هر ارسال هر پست مجاز میکند :

کد زیر حداکثر زمان اجرا شدن یک صفحه را 200 در نظر میگیرد و بیشتر از آن پیغام requast time به نمایش در می آید :

و کد زیر حداکثر زمان دریافت اطلاعات POST و GET را تعیین میکند که در حال حاضر 250 تانیه است :

 

دیدگاه ها
  • جواد می‌گه:

    مرسی که آموزش رو گذاشتی .
    خوب بود فقط اول موارد و کدهای امنیتی و مهم ک همه تقریبا وبسایت های وردپرسی قرار میدن توی این فایل مطرح کن بعد بقیه موارد، چون امنیت واقعا مهمه 🙂

    • آقای برنامه نویس می‌گه:

      چشم جواد جان ، احتمالا قسمت چهارم ارتقا امنیت وردپرس هم منتشر کنم

  • mmjahann می‌گه:

    بسیار ممنون

  • amentaheri می‌گه:

    سلام اول خیلی ممنون که این اموزش گذاشتی دم گرم اگر میشه امکان دارد به صورت فیلم اموزش بده ممنون میشه یاعلی

    • آقای برنامه نویس می‌گه:

      چون آموزش ساده بود گفتم بهتره به صورت مقاله ارسال کنم اما بازم مرسی از ارسال نظر

  • mmjahann می‌گه:

    من این 2 تا رو اضافه کردم و وقتی از وردپرس اومدم بیرون و خواستم دوباره لاگین کنم ارور میداد
    Options All -Indexes
    DirectoryIndex file.php file.html
    پاک کردم درست شد

    • آقای برنامه نویس می‌گه:

      دستور اولی که خود من هم قرار دادم و مشکلی نداره ، دقت کمید این دستورات را در خارج از تمامی کد های فعلی این فایل وارد کنید

      • mmjahann می‌گه:

        میدونم احتمالا یک اشتباهی کردم اما گفتم شاید دوستانی این مشکل رو داشته باشن بتونن حل کنند

  • جعفر می‌گه:

    سلام وخسته نباشید
    میخواستم بدونم اگر این فایل یعنی htaccess در روت نباشد چه اشکالی برای سایت پیش میاید!!! من یک هاست دانلود خریدم و هاست دانلود ام با این فایل به مشکل برخورد!! یعنی موقع دانلود یک فایل ارور 500 داخلی می داد!! خلاصه این فایل را مجبور شدم حذف کنم!!!! میخواستم بدونم ایا واجب هست که این فایل در هاست وجود داشته باشد؟؟

    سپاس

    • آقای برنامه نویس می‌گه:

      اگر از هاست دانلود فقط برای دانلود فایل استفاده کرده باشید ، مثلا آپلود سنتر نصب نکرده باشید که به هیچ وجه هیچ مشکلی نداره
      اگر هم اسکریپتی مثل وردپرس و آپلود سنتر و .. نصب کرده باشید شاید مشکلی پیش نیاد و در صورت بروز مشکل ، خطا انقدر تو چشم میاد که خودتون متوجه میشید. برای مثال اگر وردپرس نصب کرده باشید و پیوند یکتای سایتتان را سفارشی کرده باشید و این فایل را حذف کنید مطالب سایتتان دیگر بالا نمیاد !

  • جعفر می‌گه:

    ممنون دوست عزیز: من منظورتون را زیاد متوجه نشدم!!!
    من یک هاست سی پنل دارم که توش وردپرس نصب هست!!
    من الان پیوند های یکتا را فعال کردم ولی هیچ اروری دریافت نمی کنم!!! کلا توی فایل htacess که یک خط کد هم نبود!!! ایا توی فایل کد هم نباشه :واجب هست که توی هاست باشه؟؟؟
    در ضمن یک هاست دانلود دارم که دایرکت ادمین هست و توی فایل ویدئویی و… اپلود می کنم!!!
    الان مشکل من این هست که این فایل به لینک های که توی هاست دانلود اپلود می کنم گیر می دهد!! ایا کدی وجود داره که بهش بگیم گیر نده!!! ارور 500

    سپاس

    سپاس

    • آقای برنامه نویس می‌گه:

      اگر چیزی داخلش نباشه حذف کردنش اشکالی نداره ، اما اگه خالی باشه دلیل برای حذف کردنش نیست چون دخالتی نداره !
      ارور 500 مربوط به سرور هست ، شما با مدیر هاستینگتون تماس بگیرید و اگر جوابگو نبودند توصیه میکنم حتما سرورتون را عوض کنید

  • جعفر می‌گه:

    ممنون دوست عزیز: من به هاستم تیکت زدم ولی انها می گن برای ما مشکل نداره!!!! از تاپ هاست می گیرم!!!
    ایا مشکل از هاست دانلود هست یا هاست اصلی که وبسایت درون اش اپلود شده؟؟؟

    سپاس

  • جواد می‌گه:

    یه سوالی واسم پیش اومده این کد ،
    Options All -Indexes
    با این کد چه فرقی داره
    Options -Indexes
    در نحوه اجرا ؟ واینکه آیا این کدها مانع ایندکس شدن فولدر ها و محتویات توسط گوگل میشه ؟!!

    • آقای برنامه نویس می‌گه:

      اگر Options All -Indexes بزارید عمل بر روی کل زیر شاخه ها انجام میشه ، مثلا در htaccess عمل بر کل سایت انجام میشه
      اما Options -Indexes فقط بر همون فولدری که فایل htaccess درونشه و محتوای زیر شاخه هایش (فولدر هایش) شامل نمیشه

      اگه استفاده میکنید از Options All -Indexes استفاده کنید که بر کل سایت عمل میکنه نه بر فولدر خاصی
      خیر این کد مانع ایندکس نمیشه و اصلن برای امنیت وجودش اجباریه و خود بنده هم ااستفاده میکنم

  • سعید می‌گه:

    آقا این htaccess تغغیر نام پیدا نمیکنه ! الان هم تو سی پنلم وجود نداره میخواهم بسازم

    • آقای برنامه نویس می‌گه:

      وقتی شما در سی پنل بر گزینه file manager کلیک میکنید باید چک باکس sohw را فعال کنید و بعد دکمه ok را بزنید.
      دقت کنید این فایل نام ندارد و htaccecc پسوند فایل است به ایت صورت : htaccess.
      اگر باز مشکل داشتید با مدیر سرروتون در تماس باشید

  • hossein8867 می‌گه:

    سلام حسین جان.میشه لطفا این htaccess و mysql رو هم به صورت ویدئویی آموزش بدی؟

  • amir2647 می‌گه:

    سلام اقا حسین وقتیمیخوام سایتو تو الکسا تایید کنم با ارور زیر که عکسو گذاشتم مواجه میشم خواهشا کمک کنید
    upload7.ir/uploads//d04608783aff5c95c4e21b2f17717670ec5cfc5c.png
    upload7.ir/uploads//e157906346d7d1fc1f63b59e11a27d00834bd5e7.png

  • hadiesmaili85@gmail.com می‌گه:

    سلام آقای برنامه نویس یه سوال دارم اونم اینکه آیا اگه من سایتم رو با www قفل کرده باشم چه فرقی داره با اون سایتی که با www قفل نکرده؟؟؟ آیا از لحاظ مطالب سایت باهم فرق دارن یا چی؟؟؟؟
    خیلی ممنون

    • حسین شفیعیان می‌گه:

      سلام
      از لحاظ ساختار هیچ مشکلی نیست اما از لحاظ سئو تاثیر منفی داره چون یک مطلب با دو آدرس باز میشه

  • hadiesmaili85@gmail.com می‌گه:

    میشه توضیح بدید که این php_value max_execution_tim برای چه مواقعی به کار میرود؟؟؟اصن به درد میخوره یانه؟؟
    متشکرم

    • حسین شفیعیان می‌گه:

      با این دستور حداکثر مدت زمان اجرای یک صفحه را تعیین میکنیم . مثلا ممکنه یک صفحه 300 ثانیه طول بکشد ، اجرای یک صفحه با این حجم ممکنه به سرور فشار بیاره و برای همین تعیین میکنیم که مثلا زمان بارگذاری یک صفحه بیشتر از 10 ثانیه طول نکشد و اگر بیشتر شد ارتباط قطع شود
      خیر کاربر آنچنانی ندارد و در صورت استفاده از اسکریپت های خاص استفاده میشود

  • hadiesmaili85@gmail.com می‌گه:

    سلام دوست عزیزم
    ببخشید که همواره سوال میپرسم داداش
    این سوالمو هم جواب بدید خیلی ممنونتون میشم : اون قسمت که گفتید برای محافظت کردن از خود فایل htaccess. این قسمت ها رو میشه توضیح بدید؟؟ خیلی ممنون میشم : order allow,deny , Deny From All
    این orderبرای چی هستش؟؟چی کاری انجام میده اینجا؟؟
    Deny From All چه کاری انجام میده برای محافظ از htaccess؟؟؟؟؟؟
    بسیار متشکر

    • حسین شفیعیان می‌گه:

      سلام دوست گرامی
      Deny From All سطح دسترسی به htaccess را محدود میکند
      قسمت order allow یعنی بقیه فایل ها سطح آزاد داشته باشند

  • Afshin می‌گه:

    سلام
    ببخشید میخواستم بپرسم که کدها رو باید بیرون از خود کدهای اچ تی اکسس بزاریم یا داخلش؟
    آخه یا جا نوشته بود بیرون کدها باشه بهتره
    لطفا راهنمایی کنید.

  • uhfndk می‌گه:

    عالی فقط یک سوال یک قسمت از دامنه رو میخوام به ساب دومین انتقال بدم ریدایرکتش چطوری میشه

  • سعید می‌گه:

    سلام خسته نباشید
    هر چند وقت یک بار ( معمولا” ماهی یک بار) سایت من به مشکل می خوره موقع باز کردن سایت کاربرها پیغام نصب ورد پرس می بینن ( منظورم همون صفحه اول برای انتخاب زبانه که برای شروع هر سایتی باید انتخاب کنیم) هر بار که با هاستینگ تماس می گیرم مشکل را حل می کنن می گن فایل htaccess را reset کردن درست شده این مشکلش از چی می تونه باشه؟ چطوری می شه یک بابر بر ای همیشه این مشکل را حل کرد؟چون من تمام پلاگین های امنیتی که فایل htaccess را دستکاری می کنن غیر فعال کردم ولی باز هم این مشکل هست

    • حسین شفیعیان می‌گه:

      سلام
      احتمال میدم مشکل از هاستینگتون باشه ، عوضش کنید

      • سعید می‌گه:

        ممنون
        تا وقتی که فایل htaccess تغییری نکنه هیچ مشکلی برای سایت پیش نمی یاد ولی گاهی بدون یچ دلیلی این فایل تغییر می کنه با این که خودم یا پلاگین ها هیچ تغییری توش نمی دیم…. ایا خود ورد پرس می تونه این فایل را تغییر بده؟ به جز پلاگین های امنیتی چه پلاگینی می تونه این فایل را تغییر بده؟ من پلاگین redirection را نصب دارم می تونه کار این باشه؟

        • حسین شفیعیان می‌گه:

          میتونه از پلاگین ها هم باشه ، باید یکی یکی تست کنید اما به احتمال زیاد مربوط به هاستینگ میشه

  • mehdi می‌گه:

    سلام
    برای از بین بردن صفحات و ارور 404 کدام افزونه از نظر ساختار کد های HTML مرتب با SEO بهتره افزونه 404 to 301 یا افزونه 404page ؟
    wordpress.org/plugins/404-to-301
    wordpress.org/plugins/404page

  • آموزش php می‌گه:

    عالی بود کیف کردم واقعا مهندس

  • ابراهیم می‌گه:

    سلام
    کیفیت سایتتون و همچنین جواب سوالات بسیار عالیست
    من رو wamp server دارم یه چیزی برا خودم طراحی میکنم
    در قسمت admin یعنی www/mysite/admin میخوام به جای این آدرس
    localhost/mysite/admin/?page=dashboard آدرس localhost/mysite/admin/dashboard
    این صفحه رو باز کنه. کد زیر رو نوشتم جواب نمیده
    RewriteCond %{QUERY_STRING} ^id=456&lid=789.* [NC]
    RewriteRule (.*) localhost/mysite/admin/$1? [R=301]
    لطفا راهنمایی بفرمایید.

  • savior_iran می‌گه:

    سلام خسته نباشید یه مشکلی برام پیش اومده که هر وقت از سیشن ها در برنامه ام استفاده می کنم این خطا زیر که در پایین است برام در اون صفحه پیش میاد میتونم درخواست کنم این مشکل براچی پیش میاد ممنون میشم جوابم بدید؟ باتشکر.
    This webpage has a redirect loop

    The webpage at localhost/Site/Admin/Change_pass.php has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer.

    • حسین شفیعیان می‌گه:

      فکر میکنم شما کوکی هاتون را غیر فعال کرده باشید ، سیشن برای ثبت از کوکی استفاده میکنه !

  • mohammad می‌گه:

    سلام.من در حال راه اندازی اولین وبسایتم هستم. برای آپلود فایل ها از pureftp در netbeans استفاده میکنم .وقتی فایل .htaccess رو در نت بینس به پروژه ام اضافه میکنم .عملیات انجام میشه ولی توی پنل هاست هرقدر رفرش میکنم . این فایل رو نمیبینم . حالا میخوام بدونم چون یک فایل مخفی هست توی هاست دیده نمیشه . یا کار من اشتباهه.التبه به صورت دستی هم آپلود کردم اما نشد.

  • محمد می‌گه:

    سلام .ممنون بابت پاسخ به سوال قبلی
    راستش من توی فولدر روت سایتم یک فایل دارم به نام composer.json که اطلاعاتی در مورد این که من از چه فریم ورکی استفاده میکنم به کاربر میده و یا فایل home.css که کاربر به راحتی میتونه بهش دست پیدا کنه…حالا من میخوام اگر کاربر مسیر این فایل هارو تئ url وارد کرد به صفحه ی خطا منتقل بشه و نتونه محتویات فایل رو ببینه…
    از جه دستوری در.htaccess باید استفاده کنم؟؟
    و اگر از این دستور:
    Options +FollowSymlinks
    RewriteEngine On
    rewritecond %{REQUEST_FILENAME} !^(.+).css$
    rewritecond %{REQUEST_FILENAME} !^(.+).js$
    rewritecond %{REQUEST_FILENAME} !file.php$
    RewriteRule ^(.+)$ /deny/ [nc]
    باید استفاده کنم…من زمانی که از این دستور استفاده میکنم یک ارور به نام
    internal server error 500
    جایی خونده بودم که باید روی هاست ماژول mod_rewrite نصب باشه . که پشتیبانی گفت نصبه.
    چیکار باید کنم ؟؟؟؟؟

    (ببخشید که حجمش زیاد شد)

    • حسین شفیعیان می‌گه:

      برای مورد اول میتونید پرمیژن رو تغییر بدید
      در مورد مشکل دومتون اطلاعای ندارم ! ولی ارور 500 مربوط به سرور میشه !

  • پرهام می‌گه:

    سلام مهندس خسته نباشید
    می خوام url: localhost/db/Wow/index.php
    به
    url :localhost/db/Wow/home
    تغییر بدم. آیا چنین کاری با htaccess ممکنه؟ اگر میشه کدش رو بزارید

  • محمدرضا می‌گه:

    سلام
    یک سوال چطوری میشه از طریق فایل htaccess دسترسی دانلود رو بست و فقط بتونن ببیند فیلم یا… رو ولی امکان دانلود نداشه باشن مثل سایت فیلیمو

    باتشکر از سایت خوبتون!