نگار جوادزاده
نگار جوادزاده
خواندن ۲۴ دقیقه·۴ سال پیش

فایل htaccess. چیست؟ و چه کاربردی دارد؟

Hyper Text Access
Hyper Text Access

فایل htaccess. چیست؟

لغت htaccess مخفف "Hyper Text Access" است که به فارسی می‌توان آن را به "دسترسی توسط ابرمتن" ترجمه کرد. در حالت عادی اگر بخواهید تغییراتی در وب سرور ایجاد کنید باید به فایل‌های تنظیمات وب سرور اصلی دسترسی داشته باشید، اما این فایل راه انجام بعضی کارها و تغییرات در وب سرور شما را بدون نیاز به فایل‌های اصلی ایجاد می‌کند. فایل htaccess توسط وب سرورهای Apache و Litespeed استفاده می‌شود.

فایل های htaccess. در سطح یک دایرکتوری کار می کنند ، این فایل ها اجازه می دهند تا تنظیمات پیکربندی سراسری دستورالعمل های htaccess. بالاتر را، در درخت فهرست نادیده بگیرند.

فایل htaccess. کجاست؟

از لحاظ تئوری ، هر پوشه (دایرکتوری) در سرور شما می تواند یک فایل htaccess. داشته باشد. به طور کلی ، یک فایل htaccess. در پوشه ریشه وب شما وجود دارد (این پوشه ای است که تمام محتوای وب سایت شما را نگهداری می کند و معمولاً برچسب چیزی مانند public_html یا www دارد). در اغلب  سیستم های مدیریت محتوا مثل وردپرس و دروپال این فایل بصورت خودکار ایجاد می شود.

در بیشتر file systems ، نام فایل هایی که با نقطه (.) شروع می شوند ، پرونده های مخفی هستند. این بدان معناست که به طور پیش فرض معمولاً قابل مشاهده نیستند. ولی با استفاده از ویژگی "show hidden files" در مدیریت فایل های خود می توانید این فایل را مشاهده کنید.

اگر فایل htaccess. را نداشتید، برای ایجاد این فایل از روش زیر استفاده کنید:

  • یک فایل جدید را در یک ویرایشگر متن ساده ایجاد کنید.
  • آن را با فرمت ASCII (نه UTF-8 یا هر چیز دیگری) به عنوان htaccess. ذخیره کنید.(مطمئن شوید که htaccess.txt یا مواردی از این دست نباشد. پرونده باید فقط دارای نام htaccess. بدون پسوند پرونده اضافی باشد.)
  • آن را از طریق FTP یا مدیر فایل مبتنی بر مرورگر خود در فهرست مناسب بارگذاری کنید.

کاربرد های htaccess

فایل htaccess یک فایل متن کوچک اما پر قدرت است که بسیاری از جنبه‌های نحوه نمایش صفحات وب را کنترل می‌کند. مانند انتقال کاربر به آدرس دیگر(redirect)، فعال کردن فشرده سازی فایل‌ها توسط سرور(gzip)، بازنویسی آدرس ها(rewrite urls)، فعال سازی کش مرورگر(leverage browser cache) ، امکان محافظت از رمز عبور برای وب سایت ها (password protection)، نمایش صفحات خطای سفارشی (Error Handling) مانند صفحه 404، افزایش سئو از طریق یک خط مشی سازگار با اسلش دنباله دار (SEO) و بسیاری دیگر را تنها با اضافه کردن چند خط کد به این فایل کوچک می‌توان انجام داد.

در بیشتر نرم افزارهای تولید محتوا، با تغییر htaccess.txt به htaccess. می‌توان گزینه بهینه سازی آدرس‌ها برای گوگل را فعالسازی نمود، این قابلیت برای مدیران تارنماها از اهمیت فوق العاده ای برخوردار است.



در این مقاله به تعدادی از این کاربرد های فایل htaccess اشاره میکنیم:

1) مدیریت خطا ها

استفاده از فایل های htaccess. برای تعیین اسناد خطا بسیار ساده است ، یکی از ساده ترین کارهایی که می توانید با این فایل ها انجام دهید.

کد خطا چیست؟

هنگامی که درخواستی از وب سرور ارائه می شود ، سعی می شود به آن درخواست پاسخ دهد ، معمولاً با ارائه سندی (در مورد صفحات HTML) ، یا با دسترسی به یک برنامه و بازگرداندن خروجی (در مورد سیستم های مدیریت محتوا و برنامه های وب دیگر). اگر مشکلی در این زمینه رخ دهد ، خطایی ایجاد می شود. انواع مختلف خطاها دارای کد خطاهای مختلف هستند. احتمالاً با خطای 404 آشنا هستید که اگر سندی در سرور پیدا نشود این خطا برمی گردد. بسیاری از کدهای خطای دیگر وجود دارد که سرور می تواند با آنها پاسخ دهد.

Errors
Errors


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

برای هر کد خطایی که می خواهید مدیریت کنید یک سند HTML ایجاد کنید. می توانید این موارد را هرچه دوست دارید نامگذاری کنید ، اما بهتر است که نام آنها را چیزی بنویسید که به شما کمک کند به خاطر داشته باشید برای چه چیزی استفاده می کنید ، مانند: not-found یا به سادگی 404. سپس ، در فایل 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

2) محافظت از رمز عبور

هدف اصلی از فایل های htaccess. محدود کردن دسترسی به برخی از فهرست ها بر اساس هر کاربر بود. بنابراین ابتدا آن را بررسی خواهیم کرد.

فایل htpasswd.

نام های کاربری و رمزهای عبور برای سیستم htaccess. در یک فایل htpasswd. ذخیره می شوند.

اینها هر یک به صورت زیر ذخیره می شوند:

username:encryptedpassword

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

فایل htpasswd. را کجا نگه دارید؟

برای هر فایل htaccess. نیازی نیست که یک فایل جداگانه htpasswd. داشته باشید. در واقع ، در بیشتر موارد ، باید یک حساب برای کل حساب web hosting یا server directory اصلی خود داشته باشید.

پرونده htpasswd. نباید در یک فهرست عمومی قابل دسترسی باشد ( نه public_html یا www یا زیر شاخه فرعی). باید بالاتر از آن باشد ، در پوشه ای که فقط از طریق خود سرور قابل دسترسی است.

نحوه استفاده از htpasswd. با htaccess.

هر دایرکتوری می تواند فایل htaccess. مخصوص به خود را داشته باشد ، با مجموعه کاربران خاص خود که مجاز به دسترسی به آن هستند. به صورت پیش فرض تمام کاربران (از جمله کسانی که وارد سیستم نشده اند) به همه دایرکتوری ها اجازه دسترسی دارند. برای محدود کردن دسترسی باید موارد زیر را به فایل htaccess. اضافه کنید:

AuthUserFile /usr/local/etc/.htpasswd AuthName &quotName of Secure Area&quot AuthType Basic <Limit GET POST> require valid-user </Limit>

خط اول، مسیر و نام فایل را به لیست نام های کاربری و رمزهای عبور شما مشخص می کند. خط دوم، نامی را برای منطقه امن مشخص می کند. این می تواند هر آنچه دوست دارید باشد. خط سوم احراز هویت "اساسی" را مشخص می کند ، همان چیزی است که شما معمولاً به آن نیاز دارید.

برچسب <Limit> محدودیت هایی را مشخص می کند (در این حالت ، امکان دریافت یا ارسال به هر پرونده موجود در فهرست). درون برچسب های <Limit> لیستی از افراد مجاز به دسترسی به پرونده ها وجود دارد.

در مثال بالا ، هر کاربر معتبری می تواند به پرونده ها دسترسی پیدا کند. اگر می خواهید دسترسی به یک کاربر خاص یا تعداد کمی از کاربران را محدود کنید ، می توانید آنها را نام ببرید.

AuthUserFile /usr/local/etc/.htpasswd AuthName &quotName of Secure Area&quot AuthType Basic <Limit GET POST> require user johnsmith require user janedoe </Limit>

همچنین می توانید کاربران را در گروه ها قرار داده و اجازه دسترسی مبتنی بر گروه را بدهید. این کار با اضافه کردن فایل دیگری که گروه ها را مشخص می کند انجام می شود.

استفاده از htaccess. و htpasswd. برای محدود کردن دسترسی به برخی از پرونده های موجود در سرور تنها در صورت داشتن تعداد زیادی فایل استاتیک منطقی است. این ویژگی زمانی توسعه یافت که وب سایت ها معمولاً مجموعه ای از اسناد HTML و منابع مرتبط بودند. اگر از سیستم مدیریت محتوا (CMS) مانند وردپرس یا دروپال استفاده می کنید ، می توانید از ویژگی های مدیریت کاربر داخلی برای محدود کردن یا اعطای دسترسی به محتوا استفاده کنید.

3)فعال کردن Server Side Includes

مشمولان سمت سرور (Server Side Includes) یک زبان برنامه نویسی سبک وزن است که در درجه اول برای جاسازی اسناد HTML در سایر اسناد HTML استفاده می شود. این باعث می شود که بتوان از عناصر معمول مانند سرصفحه ها ، زیر صفحه ها ، ستون های فرعی و منوها دوباره استفاده مجدد کرد. شما می توانید آن را به عنوان یک پیش درآمد سیستم های مدیریت محتوا در نظر بگیرید.

<!-- include virtual=&quotheader.shtml&quot -->

زبان SSI همچنین دارای دستورالعمل های شرطی (if, else, etc) و متغیرها می باشد که آن را به یک زبان اسکریپت نویسی کامل ، اگر چه تا حدی سخت ، تبدیل می کند. (به طور معمول ، هر پروژه ای که پیچیده تر از تعداد انگشت شماری include باشد ، باعث می شود که یک توسعه دهنده زبان محکم تری مانند PHP یا Perl را انتخاب کند.)

فعال کردن SSI

برخی از سرورهای میزبان وب Server Side Includes را به طور پیش فرض فعال می کنند. اگر فعال نبود ، می توانید آن را با فایل htaccess. خود فعال کنید ، مانند این موارد:

AddType text/html .shtml AddHandler server-parsed .shtml Options Indexes FollowSymLinks Includes

این کد ها، SSI را برای همه فایل هایی که پسوند shtml. دارند فعال می کند.

فعال کردن SSI برای فایل های html.

اگر می خواهید SSI را روی فایل های html. فعال کنید ، می توانید یک دستورالعمل به htaccess. اضافه کنید:

AddHandler server-parsed .html

فایده انجام این کار این است که شما می توانید از SSI استفاده کنید بدون اینکه به دنیا بگویید که از آن استفاده می کنید. همچنین ، اگر پیاده سازی ها را در آینده تغییر دهید ، می توانید پسوند فایل های html خود را حفظ کنید. نکته منفی این مسئله این است که هر پرونده html با SSI تجزیه می شود. اگر فایلهای html زیادی دارید که به تجزیه SSI نیاز ندارند ، این امر می تواند سربار غیرضروری زیادی را برای شما ایجاد کند، زمان بارگذاری صفحه شما را کند و از منابع CPU استفاده کند.

فعال کردن SSI برای صفحات Index

اگر نمی خواهید همه فایل های html را تجزیه کنید ، اما می خواهید از SSI در صفحه اصلی خود استفاده کنید ، باید این مورد را در فایل htaccess. خود مشخص کنید. دلیل این امر این است که وقتی وب سرور به دنبال صفحه اصلی دایرکتوری است ، به دنبال index.html است ، مگر اینکه شما خلاف آن را بگویید.

اگر فایل های html را تجزیه نمی کنید ، برای کار با SSI باید صفحه اصلی خود را index.shtml نامگذاری کنید و سرور شما نمی داند به طور پیش فرض به دنبال آن (به عنوان صفحه اصلی ) باشد. برای فعال کردن آن ، به سادگی خط زیر را به فایل htaccess. اضافه کنید:

DirectoryIndex index.shtml index.html

این به وب سرور هشدار می دهد که پرونده index.shtml فایل اصلی برای پوشه است. پارامتر دوم ، index.html یک نسخه پشتیبان است ، در صورتی که index.shtml پیدا نمی شود.

4) لیست سیاه IP و لیست سفید IP

شما می توانید از htaccess. برای مسدود کردن آدرس IP خاص کاربران (لیست سیاه) استفاده کنید. این در صورتی مفید است که شما کاربران را از آدرس های IP خاص شناسایی کرده اید که باعث مشکل شده اند.

همچنین می توانید عکس این کار را انجام دهید و همه را بجز بازدیدکنندگان از یک آدرس IP خاص (لیست سفید) مسدود کنید. این درصورتی مفید است که لازم است دسترسی شما فقط به کاربران تأیید شده محدود شود.

لیست سیاه برای IP ها

order allow,deny deny from 111.22.3.4 deny from 789.56.4. allow from all

خط اول بیان می کند که باید دستورالعمل های allow قبل از دستورالعمل های deny ارزیابی شوند. این بدان معنی است که اجازه از همه حالت پیش فرض خواهد بود و سپس فقط کسانی که با دستورالعمل های deny مطابقت دارند رد می شوند.

اگر به order deny, allow معکوس شود ، آخرین چیزی که ارزیابی می شود allow است ، که به همه اجازه می دهد تا به deny غلبه کند.

به خط سوم توجه کنید که 789.56.4 را deny کرده است. این یک آدرس IP کامل نیست. با این کار تمام آدرس های IP موجود در آن بلوک (هر یک از آنها با 789.56.4 شروع می شود) را رد می کند.

شما می توانید هر تعداد آدرس IP را که می خواهید ،با دستورالعمل deny، رد کنید.

لیست سفید برای IP ها

لیست سفید، عکس لیست سیاه است. (محدود کردن همه به جز مواردی که شما مشخص کرده اید.)

همانطور که حدس می زنید ، دستورالعمل سفارش باید معکوس شود ، به این ترتیب ابتدا همه رد می شوند ، اما سپس آدرس های خاص مجاز هستند.

order deny,allow deny from all allow from 111.22.3.4 allow from 789.56.4.

5) تعیین یک فایل پیش فرض برای یک دایرکتوری

وقتی از یک وب سرور برای یک URL درخواست می شود که نام یک فایل را مشخص نمی کند ، فرض موجود در اکثر وب سرورها این است که URL به یک دایرکتوری اشاره دارد.

بنابراین ، در صورت درخواست http://example.com ، وب سرور Apache (و سایر وب سرورها) در دایرکتوری ریشه دامنه(معمولاً / public_html یا موارد مشابه)، فایل پیش فرض را جست و جو میکند. فایل پیش فرض (به طور پیش فرض) index.html نامیده می شود. این به ابتدای اینترنت برمی گردد زمانی که یک وب سایت فقط مجموعه ای از اسناد بود و صفحه "خانه" معمولاً نمایه ای از این اسناد بود.

اما ممکن است شما نخواهید که index.html صفحه پیش فرض باشد. به عنوان مثال ، ممکن است به نوع پرونده دیگری مانند index.shtml ، index.xml یا index.php نیاز داشته باشید. یا ممکن است صفحه اصلی خود را "index" نام گذاری نکنید و بخواهید آن را چیزی متفاوت مانند home.html یا main.html بنامید.

تنظیم صفحه پیش فرض دایرکتوری

فایل htaccess. به شما این امکان را می دهد که صفحه پیش فرض یک دایرکتوری را به راحتی تنظیم کنید:

DirectoryIndex [filename here]

اگر می خواهید پیش فرض شما home.html باشد ، میتوانید کد زیر را در فایل htaccess. جا گذاری کنید:

DirectoryIndex home.html

تنظیم چندین صفحه پیش فرض

همچنین می توانید بیش از یک DirectoryIndex را مشخص کنید:

DirectoryIndex index.php index.shtml index.html

روش کار بدین صورت است که سرور وب ابتدا به دنبال اولین مورد می گردد. اگر نتواند آن را پیدا کند ، به دنبال مورد دوم می گردد و غیره.

چرا چندین صفحه پیش فرض تعریف کنیم؟ مطمئناً می دانیم از کدام پرونده می خواهیم به عنوان صفحه پیش فرض خود استفاده کنیم!

بخاطر بسپارید که htaccess. بر دایرکتوری خودش و همه زیر دایرکتوری های ان تأثیر می گذارد، تا زمانی که توسط یک فایل htaccess. دایرکتوری بالاتر لغو شود. این بدان معنی است که یک فایل htaccess. در پوشه ریشه شما می تواند دستورالعمل های بسیاری از زیر شاخه ها را ارائه دهد و هر یک ممکن است نام صفحه پیش فرض خود را داشته باشد. امکان قرار دادن این قوانین در یک فایل htaccess. در ریشه به این معنی است که شما مجبور نیستید تمام دستورالعمل های دیگر پرونده را در هر سطح دایرکتوری کپی کنید.

6) هدایت URL و بازنویسی URL

یکی از رایج ترین موارد استفاده از فایل های htaccess. ، هدایت URL است.

وقتی URL یک سند یا منبع تغییر کرده است باید از هدایت URL استفاده شود. این امر به ویژه اگر وب سایت خود را دوباره سازماندهی کرده یا نام دامنه را تغییر داده باشید بسیار مفید است.

هدایت موقت یا دائمی

از نظر مرورگر ، دو نوع هدایت وجود دارد ، 301 و 302 (این اعداد به کد خطای تولید شده توسط وب سرور اشاره دارد.) 301 به معنای "انتقال دائمی" است ، در حالی که 302 به معنای "انتقال موقت" است. در اکثر موارد ، شما می خواهید از 301 استفاده کنید. این ویژگی باعث حفظ هرگونه حق امتیاز SEO در URL اصلی می شود و آن را به صفحه جدید منتقل می کند. همچنین باعث می شود بیشتر مرورگرها بوک مارک های خود را به روز کنند. اکثر مرورگرها نقشه قدیمی به جدید را نیز ذخیره می کنند ، بنابراین وقتی پیوند یا کاربر سعی در دستیابی به نسخه اصلی دارد ، آنها به سادگی درخواست URL جدید می کنند. اگر URL به طور دائم تغییر کرده باشد ، اینها همه نتایج مطلوبی هستند.

دلیل بسیار کمی برای استفاده از تغییر مسیر 302 وجود دارد ، زیرا معمولاً دلیل بسیار کمی برای تغییر موقت URL وجود دارد. تغییر URL همیشه نامطلوب است ، اما گاهی اوقات لازم است. تغییر موقتی آن ، با برنامه ریزی برای تغییر بعداً ، یک ایده بد است و تقریباً همیشه قابل اجتناب است.

تمام مثالهای این بخش از تغییر مسیر 301 استفاده می کنند.

تغییر مسیر در مقابل بازنویسی (Redirect vs. Rewrite)

برای تغییر "URL" با دستورالعمل های htaccess. دو روش مختلف وجود دارد .

  • دستور Redirect
  • موتور mod_rewrite

دستور Redirect در واقع یک پیام تغییر مسیر به مرورگر می فرستد ، به او می گوید که چه URL دیگری را جستجو کند.

به طور معمول ، ابزار mod_rewrite یک "URL" (آدرس ارائه شده در یک درخواست) را به چیزی تبدیل می کند که سیستم فایل یا CMS آن را بفهمد ، و سپس درخواست را به گونه ای اداره می کند که انگار URL ترجمه شده URL درخواست شده است. وقتی از این طریق استفاده می شود ، مرورگر وب متوجه نمی شود که اتفاقی افتاده است . فقط محتوای درخواستی را دریافت می کند.

از ابزار mod_rewrite می توان برای تغییر مسیر 301 نیز استفاده کرد که همانند دستور Redirect عمل می کنند ، اما با گزینه های بیشتر برای قوانین mod_rewrite می تواند دستورالعمل های پیچیده تطبیق و بازنویسی الگو را داشته باشد ، که Redirect نمی تواند از آنها استفاده کند.

تغییر مسیر صفحه اصلی

کد زیر برای هدایت یک صفحه به URL دیگر ، است:

Redirect 301 /relative-url.html http://example.com/full-url.html

این دستور تک خطی دارای چهار قسمت است که هر قسمت با یک فضای جداگانه جدا شده اند:

  • دستور Redirect
  • نوع تغییر مسیر (301 - انتقال به صورت دائمی)
  • آدرس( URL) نسبی صفحه اصلی
  • آدرس کامل صفحه جدید.

آدرس( URL) نسبی مربوط به دایرکتوری حاوی فایل htaccess. است که معمولاً ریشه وب یا ریشه دامنه است. بنابراین اگر http://example.com/blog.php به http://blog.example.com منتقل شده باشد ، کد به شرح زیر است:

Redirect 301 /blog.php http://blog.example.com

هدایت بخش بزرگی از وب سایت شما

اگر ساختار دایرکتوری خود را تغییر مکان داده اید ، اما نام صفحه خود را یکسان نگه داشته اید ، ممکن است بخواهید تمام درخواست های یک دایرکتوری خاص را به دایرکتوری جدید هدایت کنید.

Redirect 301 /old-directory http://example.com/new-directory

هدایت مجدد یک سایت کامل

اگر کل سایت شما به یک URL جدید منتقل شده باشد:

Redirect 301 / http://newurl.com

هدایت www به غیر www

به طور فزاینده ای ، وب سایت ها از زیر دامنه www دور می شوند. واقعاً هرگز ضروری نبوده است ، اما این مسئله از روزهایی که بیشتر افرادی که یک وب سایت را اداره می کردند از یک سرور برای ذخیره بسیاری از اسناد خود استفاده می کردند ، استفاده می شد و از فهرست www یا "شبکه جهانی وب" برای محتوایی که می خواستند با دیگران به اشتراک بگذارند، استفاده می شد.

این روزها ، برخی از مردم استفاده می کنند ، و برخی دیگر استفاده نمی کنند. متأسفانه ، برخی از کاربران هنوز بصورت خودکار www را در مقابل هر URL از روی عادت تایپ می کنند.

اگر از www استفاده نمی کنید ، می خواهید مطمئن شوید که این درخواست ها در مکان مناسب قرار دارند، شما باید از ماژول mod_rewrite استفاده کنید ، که احتمالاً قبلاً در میزبان وب شما نصب شده است.

Options +FollowSymlinks RewriteEngine on RewriteCond % ^www.example.com [NC] RewriteRule ^(.*)$ http://example.org/$1 [R=301,NC]

مراقب باشید!

بسیاری از راهنماهای htaccess. و mod_rewrite برخی از کد های زیر را برای تحقق این امر ارائه می دهند:

Options +FollowSymlinks RewriteEngine on RewriteCond % !^example.com [NC] RewriteRule ^(.*)$ http://example.org/$1 [R=301,NC]

مشکل این کد این است که، همه زیر دامنه ها را به دامنه اصلی هدایت می کند. بنابراین نه فقط www.example.com ، بلکه همچنین blog.example.com و admin.example.com و هر چیز دیگری. این احتمالاً رفتاری نیست که شما می خواهید.

هدایت به www

اما اگر از زیر دامنه www استفاده می کنید چه می کنید؟

احتمالاً باید هدایت را تنظیم کنید تا مطمئن شوید افراد به مکان مورد نظر خود می روند. به خصوص اکنون که احتمال می رود افراد کمتری به صورت خودکار آن www را به ابتدای URL ها اضافه کنند.

شما فقط کد بالا را معکوس کنید.

RewriteEngine On RewriteCond % ^example.com [NC] RewriteRule ^(.*) http://www.website.com/$1 [R=301,NC]

آیا باید خطاهای 404 را به صفحه اصلی هدایت کنم؟

چندین راهنما در مورد هدایت htaccess شامل دستورالعمل هایی برای نحوه هدایت خطاهای 404 به صفحه اصلی است.

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

همه وب سایت ها باید یک صفحه 404 سفارشی داشته باشند که به طور واضح به کاربر توضیح دهد که نمی توان محتوا را پیدا کرد و در حالت ایده آل ، برخی از ویژگی های جستجو را برای کمک به کاربر در یافتن خواسته های خود ارائه می دهد.

چرا از htaccess به جای گزینه های جایگزین استفاده کنیم؟

می توانید تغییر مسیر را در پرونده های PHP یا با هر نوع دیگری از برنامه نویسی سمت سرور تنظیم کنید. همچنین می توانید آنها را در سیستم مدیریت محتوا تنظیم کنید.

اما استفاده از htaccess معمولاً سریعترین نوع تغییر مسیر است. با استفاده از هدایت مجدد مبتنی بر PHP یا سایر زبان های اسکریپت نویسی سمت سرور ، باید کل درخواست تکمیل شود و اسکریپت در واقع قبل از ارسال پیام تغییر مسیر به مرورگر ، تفسیر شود.

با هدایت htaccess ، سرور مستقیماً به پیام تغییر مسیر پاسخ می دهد و این خیلی سریعتر است.

البته باید توجه داشته باشید، برخی از سیستم های مدیریت محتوا در واقع با به روزرسانی برنامه ی htaccess تغییر مسیرها را مدیریت می کنند. به عنوان مثال وردپرس دارای افزونه های ریدایرکت است که از این طریق کار می کنند. این به شما عملکرد استفاده مستقیم از htaccess را می دهد و در عین حال راحتی مدیریت را از طریق برنامه به شما می دهد.



پنهان کردن فایل htaccess. (ملاحظات امنیتی)

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

بزرگترین مسئله این است که اگر از یک فایل htpasswd. استفاده می کنید ، محل آن در فایل htaccess. مشخص شده است. دانستن اینکه کجا می توان آن را پیدا کرد ، یافتن آن را آسان تر می کند.

علاوه بر این ، به عنوان یک قاعده کلی ، شما نمی خواهید جزئیات مربوط به اجرای خود را به مردم ارائه دهید.

قوانین rewrite، تنظیمات دایرکتوری ، امنیت و همه مواردی که برای آن از htaccess. استفاده می کنید. پنهان کردن همه این پشت صحنه در وب سرور یک روش امنیتی خوب است. هر چقدر یک هکر بتواند در مورد سیستم شما بیشتر بیاموزد ، به خطر انداختن آن آسان تر است. پنهان کردن فایل htaccess. از دید عموم بسیار آسان است. فقط کد زیر را اضافه کنید:

<Files .htaccess> order allow,deny deny from all </Files>



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

مراجع: wikipedia.org | blog.iranserver.com | whoishostingthis.com

htaccessserversecurity
backend developer( PHP + Laravel)
شاید از این پست‌ها خوشتان بیاید