فایل .htaccess
یک فایل پیکربندی قدرتمند در سطح دایرکتوری برای وبسرور آپاچی (Apache) است که معمولاً در هاست لینوکس یافت میشود. این فایل به شما اجازه میدهد تنظیمات مختلفی را بدون نیاز به دسترسی به فایلهای اصلی پیکربندی سرور، برای وبسایت خود اعمال کنید. درک نحوه کار با آن برای مدیریت سرور یا هاست اشتراکی مفید است.
با آگاهی از فرامین .htaccess میتوانید کاربران سایتتان را به صفحات مناسب هدایت کنید، هکرها را آچمز کنید و ترفندهایی برای افزایش کارآیی سایتتان پیادهسازی کنید. با ویرایش فایل .htaccess میتوانید تغییراتی در عملکرد وبسایتتان ایجاد کنید. در حالت عادی و در صورت نبود این فایل، نیاز به دسترسیهایی بیش از آنچه سرویسهای هاستینگ عموما در اختیار کاربران هاست اشتراکی قرار میدهند دارید.
در این آموزش خواهیم آموخت که چگونه افسار .htaccess را به منظور انجام فرآیندهای معمول در دست بگیریم. برخی از ویژگیهای جادویی این فایل بشرح زیر میباشد:
۱. هدایت و بازنویسی آدرس صفحات (URL): اطمینان پیدا کنید که کاربران دقیقا به همان آدرس مورد نظر شما هدایت میشوند.
۲. امنیت: دسترسی به فایلها یا دایرکتوریهای خاص را محدود کنید و یا دسترسیهای ناخواسته به سایتتان را کلا مسدود کنید.
۳. بهینهسازی وبسایت: ترفندهایی برای بهبود کارآیی سایتتان به کار بگیرید.
یکی از رایجترین کاربردهای .htaccess
، مدیریت ریدایرکتها (Redirects) است. میتوانید کاربران را از یک URL قدیمی به یک URL جدید هدایت کنید (ریدایرکت 301)، نسخه با www را به بدون www (یا برعکس) منتقل کنید، یا کل ترافیک HTTP را به پروتکل امن HTTPS هدایت کنید (که نیازمند داشتن گواهینامه SSL است). این اقدامات برای خدمات سئو سایت حیاتی هستند.
قراردادن فایل .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ها
بازنویسی URL (URL Rewriting) با استفاده از mod_rewrite
در .htaccess
به شما امکان میدهد URLهای داینامیک و طولانی را به آدرسهای کوتاه، تمیز و کاربرپسند تبدیل کنید. این کار نه تنها تجربه کاربری را بهبود میبخشد، بلکه میتواند برای سئوی فنی نیز مفید باشد، زیرا ساختار 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
برای افزایش امنیت وبسایت استفاده کنید. روشهایی مانند رمزگذاری دایرکتوریها (Password Protection)، جلوگیری از نمایش لیست فایلهای پوشه (Directory Listing)، مسدود کردن دسترسی IPهای خاص (Blacklist کردن IP) و محافظت در برابر Hotlinking از جمله کاربردهای امنیتی این فایل هستند.
تنظیم صفحات خطای سفارشی
تنظیم صفحات خطای سفارشی (مانند خطای 404 یا 500) از طریق .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 انجام دهید.
فعال کردن فشردهسازی
فعال کردن فشردهسازی Gzip یا Brotli از طریق .htaccess
میتواند حجم فایلهای متنی (HTML, CSS, JS) ارسالی از سرور به مرورگر را کاهش دهد. این کار به افزایش سرعت بارگذاری سایت کمک قابل توجهی میکند که یکی از فاکتورهای مهم در بهبود تجربه کاربری و سئو است و در خدمات سرور اختصاصی قابل تنظیم است.
جلوگیری از دسترسی به یک فایل خاص
برای جلوگیری و گمراه کردن هکرها برای دسترسی به یک فایل خاص مانند فایلهای hidden میتوانید از کد زیر استفاده کنید. این کد پیغام ۴۰۴ را به جای Access Denied نمایش میدهد و باعث گمراه شدن هکر خواهد شد.
RedirectMatch 404 /\..*$
نکات پایانی
توجه: استفاده نادرست از دستورات .htaccess
میتواند باعث از کار افتادن سایت شما شود. همیشه قبل از اعمال تغییرات، از فایل اصلی پشتیبان تهیه کنید. اگر با پیکربندی سرور آشنایی ندارید، استفاده از خدمات مدیریت سرور یا مشورت با پشتیبانی هاستینگ توصیه میشود. وبسرورهای جایگزین مانند Nginx از فایل .htaccess
استفاده نمیکنند و روشهای پیکربندی متفاوتی دارند.
اگه بخواییم مثلا از آدرس
example.com/demo/234
به آدرس
example.com/demo.php?id=234
اشاره کنه،
باید چیکار کنیم؟
ممنون
سلام دوست عزیز
منظور شما سرچ محصولات در سایت فروشگاهی است یا به طور کلی ریدایرکت صفحه؟
با سلام
اگر بخواهیم که آدرس سایت را به https ریدایرکت کنیم به صورتی که آخر آدرسها هم اسلش / قرار بگیرد، دستور چطوری نوشته میشه؟
و اینکه آیا باید اون دستوراتی که توسط وردپرس نوشته شده است را حذف و این دستورات خودمون را جایگزین کنیم؟
داشتن اسلش / در پایان آدرس ها از تنظمیات وردپرس است