.htaccess یک فایل کوچک اما قدرتمند متنی است که بواسطه آن میتوان پیکربندیهای دایرکتوریها را در سرورهایی که وب سرور آنها آپاچی است دستخوش تغییر قرار داد. در واقع .htaccess یک واسط بین شما و وب سرور آپاچی است. لازم به ذکر است که این فایل اسم ندارد و فقط پسوند دارد، در حقیقت یک فایل بدون نام است که پسوند آن htaccess میباشد.
با آگاهی از فرامین .htaccess میتوانید کاربران سایتتان را به صفحات مناسب هدایت کنید، هکرها را آچمز کنید و ترفندهایی برای افزایش کارآیی سایتتان پیادهسازی کنید.
با ویرایش فایل .htaccess میتوانید تغییراتی در عملکرد وبسایتتان ایجاد کنید. در حالت عادی و در صورت نبود این فایل، نیاز به دسترسیهایی بیش از آنچه سرویسهای هاستینگ عموما در اختیار کاربران هاست اشتراکی قرار میدهند دارید.
در این آموزش خواهیم آموخت که چگونه افسار .htaccess را به منظور انجام فرآیندهای معمول در دست بگیریم. برخی از ویژگیهای جادویی این فایل بشرح زیر میباشد:
۱. هدایت و بازنویسی آدرس صفحات (URL): اطمینان پیدا کنید که کاربران دقیقا به همان آدرس مورد نظر شما هدایت میشوند.
۲. امنیت: دسترسی به فایلها یا دایرکتوریهای خاص را محدود کنید و یا دسترسیهای ناخواسته به سایتتان را کلا مسدود کنید.
۳. بهینهسازی وبسایت: ترفندهایی برای بهبود کارآیی سایتتان به کار بگیرید.
خب. حاشیه کافی است، بهتر است به اصل مطلب بپردازیم.
قراردادن فایل .htaccess در هاست
در هاست سی پنل، یک فایل .htaccess عموما در بالاترین دایرکتوری قابل دسترسی وبسایت قرار میگیرد تا بتواند همه بخشهای وبسایت از جمله دایرکتوری لایههای پایینتر (سابدایرکتوریها) را کنترل کند.
با این وجود، در صورتی که بخواهید دستورات در محدوده خاصتری اجرا شوند میتوانید .htaccess را در سابدایرکتوریها هم قرار دهید.
اگرچه میتوانید چند فایل .htaccess در هاستتان داشته باشید، اما عموما دستورات در فایلی پیادهسازی میشوند که در بالاترین دایرکتوری وبسایت -که معمولا دایرکتوری public_html است- قرار میگیرد.
ویرایش فایل .htaccess در سیپنل
برای ویرایش فایل .htaccess در سیپنل بصورت زیر اقدام کنید.
۱. وارد سیپنل شوید.
۲. در بخش Files از سیپنل، بر روی آیکن File Manager کلیک کنید.
۳. در پنجرهای که بصورت pop-up باز میشود، گزینه Home Directory را انتخاب کرده و حتما تیک مربوط به گزینه (Show Hidden Files (dotfiles را فعال کنید. چنانچه این پنجره pop-up برای شما نمایش داده نشد، پس از ورود به File Manager از بالای صفحه سمت راست میتوانید بر روی گزینه Settings کلیک کنید و گزینه نمایش فایلهای مخفی را فعال نمایید.
۴. فایل .htaccess را پیدا کرده و پس از راست کلیک بر روی آن گزینه Edit را بزنید.
۵. الان شما وارد ویرایشگر .htaccess شدهاید و میتوانید تغییرات مورد نیازتان را اعمال کنید.
فراموش نکنید که حتما قبل از اعمال تغییرات از فایل .htaccess بکاپ بگیرید.
در صورتی که که از این فایل بکاپ داشته باشید، در صورت بروز مشکل سریعا میتوانید بکاپ را جایگزین کنید و مشکل رفع می شود، اما اگر بکاپ نداشتید و با اعمال تغییرات در این فایل سایتتان با مشکل مواجه شد نگران نباشید، نفس عمیقی بکشید و فایل .htaccess را به .htaccess.old تغییر نام دهید تا تغییرات اعمالی لغو شوند.
وجود نقطه در ابتدای نام این فایل به چه معناست؟
در سیستمهایی مبتنی بر لینوکس/یونیکس وجود نقطه در ابتدای نام فایلها و دایرکتوریها به معنای مخفی بود آن فایل یا دایرکتوری از دید عموم است، بنابراین برای ویرایش این فایل اطمینان داشته باشید که حتما گزینه نمایش فایلهای مخفی را در سیستم خود فعال کرده اید.
استفاده از .htaccess برای هدایت و بازنویسی URLها
گاها نیاز است که کاربران به صفحهای غیر از صفحهای که روی مرورگرشان باز کردهاند هدایت شوند. شاید صفحه مذکور دیگر وجود ندارد و یا حتی ممکن است بخواهید کاربران را از آدرس بدون www به آدرسی با www هدایت کنید. مثلا اگر کاربری آدرس webramz.com را در مرورگر خود تایپ کرد به صفحه www.webramz.com هدایت شود. اینجاست که دستورات هدایت و بازنویسی .htaccess به کار میآید.
در نظر داشته باشید که همه دستورات بازنویسی و هدایت آدرس، یکبار نیاز به دستورالعمل RewriteEngine on دارند. بنابراین کافیست این دستورالعمل برای اعمال تغییرات فقط یکبار نوشته شود و نیاز نیست قبل از هر دستور قرار بگیرد.
هدایت به آدرس با www یا بدون www توسط .htaccess
به منظور بهینهسازی وبسایت برای موتورهای جستجو همواره توصیه میشود که سایت فقط به یک صورت (با www و یا بدون آن) لود شود. چرا که در صورت لود با هر دو آدرس محتویات به عنوان تکراری و کپی شناخته شده و در سئو سایت تاثیر منفی ایجاد میشود.
برای هدایت همه ورودیهای وبسایت به آدرس با www از کد زیر میتوان استفاده کرد. (به جای example.com میبایست نام دامنه خودتان را قرار دهید).
#Force www: RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]
برای هدایت به فرم بدون www نیز از کد زیر میتوان استفاده کرد.
#Force non-www: RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
هدایت به HTTPS
چنانچه بر روی هاست و دامنه شما سرویس SSL فعال شده است، با استفاده از کد زیر میتوانید ترافیک ورودی را از http به https هدایت کنید.
#Force https: RewriteEngine on RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
افزودن اسلش انتهایی
با استفاده از کد زیر میتوانید تمامی آدرسهایی که انتهای آنها “/” نیست را به فرمی هدایت کنید که “/” در انتها قرار بگیرید. به عنوان مثال با استفاده از این کد کاربر با مراجعه به آدرس https://www.webramz.com/blog به آدرس https://www.webramz.com/blog/ هدایت میشود.
RewriteEngine on RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
با استفاد از کد زیر نیز عکس عمل بالا اتفاق میافتد. یعنی آدرسهایی با “/” انتهایی به آدرسهایی بدون “/” هدایت میشوند.
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [R=301,L]
هدایت یک آدرس با استفاده از کد زیر میتوان یک URL خاص را به URL دیگری هدایت کرد.
RewriteEngine on Redirect 301 /page1.html /page2.html
در کد فوق فرضا اگر آدرس سایت شما webramz.com باشد، کاربر با مراجعه به آدرس webramz.com/page1.html به آدرس webrabmz.com/page2.html هدایت خواهد شد.
هدایت سایت به یک آدرس جدید
اگر قصد تغییر دامنه سایتتان را دارید، اما همه لینکها با همان ساختار قبل قابل استفاده میباشند، به منظور جلوگیری از افت رتبه سئو میتوانید با کد زیر آدرسهای قبلی را به آدرس دامنه جدید هدایت کنید.
RewriteEngine on RewriteCond %{HTTP_HOST} ^OldDomain.com RewriteRule ^(.*) http://NewDomain.com/$1 [P]
هدایت به URL آشنا
با استفاده از کدهای زیر میتوانید آدرسها را به URL آشنا هدایت کنید (فرضا اگر آدرس شما بصورت http://example.com/articles.php است آن را به آدرس http://example.com/articles هدایت کنید. در کد زیر میتوانید php را با پسوند موردنظرتان جایگزین نمایید.
RewriteEngine on RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^([^.]+)$ $1.php [NC,L]
افزایش امنیت با استفاده از htaccess
با استفاده از htaccess میتوان دسترسی به دایرکتوریها یا فایلها را ممنوع و یا محدود به پسورد کرد. همچنین میتوان به منظور جلوگیری از مصرف ترافیک از افرادی که لینک دانلود از سایت شما را در سایت خودشان قرار میدهند ممانعت به عمل آورد.
محافظت با پسورد از فایلها
به منظور محافظت از فایلی که در یک دایرکتوری برای همه قابل دسترس میباشد، ابتدا نیاز است که یک فایل .htpasswd ایجاد کنید. این فایل شامل یک نام کاربری و پسورد کد شده است که تنها در صورتی که فرد یوزرنیم و پسورد تعریف شده شما را وارد کند میتواند به فایل دسترسی داشته باشد.
یک راه آسان برای ایجاد یوزرنیم و پسورد کد شده برای این فایل استفاده از سرویس آنلاین 4WebHelp میباشد. هنگامی که فایل .httpasswd را ایجاد کنید با استفاده از فایل .htaccess میتوانید آن را بکار بگیرید و محافظت را انجام دهید. پروسه کامل به شرح زیر است:
۱. با استفاده از این ابزار یک نام کاربری
بسازید. خروجی ای که به شما میدهد چنین فرمتی خواهد داشت. User_Name:14fcYjcLcsbMU. سپس این خط را به در قالب فایل text ذخیره کنید.
۲. وارد سی پنل شوید و روی گزینه File Manager کلیک کنید.
۳. مسیر اصلی را کلیک و بررسی کنید که گزینه Show Hidden Files فعال باشد. این جا مسیری است که در آن فایل .htpasswd را باید آپلود کنید. این فایل به صورت مخفی است و از خارج از سیستم قابل دسترسی نخواهد بود.
۴. اکنون شما در مسیر اصلی قرار دارید. روی قسمت File+ کلیک کنید. سپس نام فایل را به صورت .htpasswd وارد کرده و آن را بسازید.
۵. حالا توجه کنید که آدرس مسیری که در آن قرار دارید چیست. این آدرس معمولا به صورت /home/username. نمایش داده میشود. همچنین میتوانید به پایین صفحه بروید و فایلی که ساختهاید را پیدا کنید. روی آن کلیک راست کرده و کلید Edit را بزنید.
۶. صفحه ادیتور باز خواهد شد. خطی را که در گام اول ساخته بودید را در اینجا paste کرده و ذخیره کنید.حالا آماده هستید تا تنظیمات مربووط به htaccess را انجام دهید.
۷. کدهای زیر را قبل دستورالعملی که در ابتدای مقاله توضیح داده شد به فایل .htaccess اضافه کنید. /home/username را با مسیر واقعی مربوط به هاست خود جایگزین کنید. Mypage.html را هم با اسم فایلی که مایلید با پسورد محافظت شود جایگزین کنید. قسمت Login Required را هم میتوانید به هر پیغامی که مایلید تغییر دهید.
AuthUserFile /home/username/.htpasswd AuthName "Login Required" AuthType basic Require valid-user
۸. مراحل کار تمام شد. فایل را ذخیره کرده و بررسی کنید.
محافظت دایرکتوریها با پسورد
مراحل امن سازی دایرکتوری شبیه به فایل میباشد.
۱. فایل htpasswd را همانند مثال قبل بسازید. قبل از گام ششم و ایجاد تغییرات در htaccess توقف کنید.
۲. یک فایل .htaccess جدید در مسیر دایرکتوری که مایلید پسورد داشته باشد بسازید و کدهای زیر را به آن اضافه کرده و ذخیره کنید.
AuthUserFile /home/username/.htpasswd AuthName "Login Required" AuthType basic Require valid-user
توجه داشته باشید که میتوانید از طریق گزینه Directory Privacy در هاست cPanel همین عملیات را بدون احتیاج به .htaccess انجام دهید.
جلوگیری از دسترسی به یک فایل خاص
برای جلوگیری و گمراه کردن هکرها برای دسترسی به یک فایل خاص مانند فایلهای hidden میتوانید از کد زیر استفاده کنید. این کد پیغام ۴۰۴ را به جای Access Denied نمایش میدهد و باعث گمراه شدن هکر خواهد شد.
RedirectMatch 404 /\..*$
اگه بخواییم مثلا از آدرس
example.com/demo/234
به آدرس
example.com/demo.php?id=234
اشاره کنه،
باید چیکار کنیم؟
ممنون
سلام دوست عزیز
منظور شما سرچ محصولات در سایت فروشگاهی است یا به طور کلی ریدایرکت صفحه؟
با سلام
اگر بخواهیم که آدرس سایت را به https ریدایرکت کنیم به صورتی که آخر آدرسها هم اسلش / قرار بگیرد، دستور چطوری نوشته میشه؟
و اینکه آیا باید اون دستوراتی که توسط وردپرس نوشته شده است را حذف و این دستورات خودمون را جایگزین کنیم؟
داشتن اسلش / در پایان آدرس ها از تنظمیات وردپرس است