زمانی که برای اولین بار سیستم مدیریت محتوای وردپرس را نصب میکنید، فایلهایی به همراه آن بر روی سرور افزوده میشوند. از پوشه wp-admin گرفته تا wp-content که تمامی محتوای تمها و افزونهها در آن نگهداری میشوند. علاوه بر اینها، فایلی بسیار مهم به نام .htaccess نیز برای وردپرس به صورت پیشفرض ساخته میشود.
این فایل یک فایل پیکربندی است که نحوه عملکرد سرور را کنترل میکند. .htaccess تنها با وبسرور Apache کار میکند و از دیگر وبسرورها مثل Nginx پشتیبانی نمیکند. در این مقاله نحوه ساخت فایل .htaccess پیشفرض وردپرس و کدهای محتوای آن را آموزش میدهیم.
فایل .htaccess چیست؟
فایل .htaccess چه کاری انجام میدهد و چرا از فایلهای ضروری وردپرس است؟ قابلیتهای این فایل:
- تعیین نمایش پیوندهای یکتا (Permalink)
- تنظیمات امنیتی سایتهای وردپرسی
- مدیریت ریدایرکتها از جمله ریدایرکت ۳۰۱
- ریدایرکت سایت بدون www به سایت با www
- افزایش کارایی و سرعت سایتهای وردپرسی
- تغییر محدودیت دسترسی با IP های خاص
- بازنویسی URL ها متناسب با اصول سئو
- قرار دادن رمز عبور دلخواه روی پوشه مورد نظر
- صفحات خطای سفارشی
- عدم نمایش برخی فایلها
- محافظت از فایلها و دایرکتوریها با رمز عبور
این فایل معمولاً در پوشه public_html قرار دارد. اگر آن را پیدا نکردید، ابتدا گزینه Show Hidden Files را در قسمت مدیریت فایلها فعال کنید. برخی نسخههای وردپرس این فایل را به همراه ندارند، بنابراین لازم است در صورت نیاز آن را خودتان بسازید.
نحوه ویرایش و درج کدهای پیشفرض .htaccess وردپرس
اگر فایل .htaccess در هاست شما موجود بود، نیازی به ساخت مجدد ندارید. فقط کافی است آن را ویرایش کرده و کدهای مورد نیاز را در آن ذخیره کنید.
ممکن است این فایل در هاست ساخته شده باشد، اما به دلیل مخفی بودن (hidden)، نمیتوانید آن را در حالت عادی ببینید. برای ویرایش فایل .htaccess مخفی:
- وارد کنترلپنل هاست شوید و به قسمت File Manager بروید.
- وارد پوشه
public_htmlشوید. - گزینه Show Hidden Files را فعال کنید تا فایلهای مخفی نمایش داده شوند.
- روی فایل
.htaccessکلیک راست کرده و گزینه Edit را انتخاب کنید. - وارد ویرایشگر فایل میشوید. کد زیر را اضافه کرده و ذخیره کنید.
نحوه ساخت فایل .htaccess پیشفرض در هاست به صورت دستی
اگر فایل .htaccess در هاست ایجاد نشده یا حذف شده باشد، باید آن را دستی بسازید. حذف این فایل اشتباه بزرگی است چون دسترسی به برخی نقاط مثل پیشخوان سایت را از شما میگیرد.
مراحل ساخت فایل .htaccess در cPanel یا DirectAdmin:
- بعد از ورود به کنترلپنل هاست، وارد قسمت File Manager شوید.
- وارد پوشه
public_htmlشوید. - از بالای صفحه روی New File کلیک کنید.
- اسم فایل را
.htaccessقرار دهید. حتماً کاراکتر نقطه قبل از اسم باشد. - محتویات زیر که کدهای پیشفرض
.htaccessوردپرس هستند را وارد کنید:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
بعد از وارد کردن کدها، فایل را ذخیره کنید. روش دیگر این است که محتویات را در یک فایل متنی در کامپیوتر خود بسازید، سپس از طریق FTP (مثل فایلزیلا) به هاست متصل شده و فایل را در پوشه public_html بارگذاری کنید.
دقت کنید، اگر کدها را اشتباه وارد کنید یا مراحل را درست انجام ندهید، ممکن است سایت با خطای ۵۰۰ یا ۴۰۴ مواجه شود.
نحوه ساخت فایل .htaccess به صورت خودکار
روشی سادهتر هم وجود دارد که بدون نیاز به ورود به هاست و ایجاد فایل دستی، فایل را به صورت خودکار میسازد:
- وارد مدیریت وردپرس سایت شوید.
- از قسمت تنظیمات (Settings)، روی پیوندهای یکتا (Permalinks) کلیک کنید.
- روی دکمه ذخیره تغییرات (Save Changes) کلیک کنید.
با هر بار تغییر در پیوندهای یکتا، فایل .htaccess اگر پاک شده باشد یا نباشد، به صورت خودکار ساخته یا بهروزرسانی میشود. مسیر ایجاد فایل نیز همان روت یا public_html سایت است.
کدهای کاربردی برای فایل .htaccess
علاوه بر کدهای پیشفرض وردپرس، کدهای مفید دیگری هم هستند که میتوانید به .htaccess اضافه کنید:
ریدایرکت از http به https
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
ریدایرکت از www به non-www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
محدود کردن دسترسی به wp-admin از IP خاص
<Files wp-login.php>
order deny,allow
Deny from all
Allow from 192.168.1.1
</Files>
جلوگیری از مرور دایرکتوری
Options -Indexes
حفاظت از فایل wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>
تفاوت .htaccess در سرورهای Apache و LiteSpeed
فایل .htaccess با وبسرور Apache کار میکند. خبر خوب این است که LiteSpeed (که بسیاری از هاستهای لینوکس از آن استفاده میکنند) به طور کامل با .htaccess سازگار است و تمام دستورات را میخواند.
اما اگر سرور شما از Nginx استفاده کند، فایل .htaccess به هیچ وجه کار نمیکند. در این صورت باید معادل تنظیمات را در فایل پیکربندی Nginx اعمال کنید که نیاز به دسترسی root به سرور دارد.
خطاهای رایج مرتبط با .htaccess و راه حل آنها
برخی مشکلات رایج که ممکن است پس از ویرایش فایل .htaccess با آنها روبرو شوید:
خطای ۵۰۰ Internal Server Error
معمولاً به دلیل وجود کد اشتباه یا ناسازگار در .htaccess ایجاد میشود. برای رفع:
- از طریق FTP یا File Manager، فایل
.htaccessرا بهhtaccess.bakتغییر نام دهید تا سرور آن را نادیده بگیرد. - اگر سایت بالا آمد، مشکل از
.htaccessبوده. - خطوط اضافهشده را پیدا کرده و حذف کنید.
- فایل را به نام اصلی
.htaccessبرگردانید.
خطای ۴۰۳ Forbidden
معمولاً به دلیل محدودیت دسترسی در .htaccess ایجاد میشود. بررسی کنید آیا کدی مثل Deny from all یا Options -Indexes به طور ناخواسته اضافه شده است.
سایت Loop میکند (خطای Too Many Redirects)
اگر بعد از اضافه کردن کد ریدایرکت HTTPS، سایت در حلقه بینهایت ریدایرکت میافتد، احتمالاً سرور SSL را در یک لایه داخلی مدیریت میکند. این کد را به جای کد ریدایرکت قبلی امتحان کنید:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
بهترین شیوههای نگهداری از .htaccess
- همیشه بکآپ بگیرید: قبل از هر تغییر، نسخه فعلی فایل را در جایی ذخیره کنید.
- تغییرات را به صورت تکتک اعمال کنید: به جای اضافه کردن چند کد همزمان، هر بار یک کد اضافه کرده و نتیجه را بررسی کنید.
- کامنت بگذارید: با استفاده از # میتوانید کامنتهای توضیحی در فایل بگذارید تا در آینده بدانید هر بخش برای چه کاری اضافه شده.
- پرمیشنهای فایل را بررسی کنید:
.htaccessباید پرمیشن ۶۴۴ داشته باشد. پرمیشن ۷۷۷ خطرناک است.
کدهای امنیتی مفید برای .htaccess در وردپرس
غیرفعال کردن اجرای PHP در پوشه uploads
هکرها گاهی فایلهای PHP مخرب را در پوشه uploads آپلود میکنند. این کد را در یک فایل .htaccess جداگانه داخل پوشه wp-content/uploads/ قرار دهید تا اجرای PHP در آن پوشه غیرفعال شود:
<Files *.php>
deny from all
</Files>
جلوگیری از Hotlinking تصاویر
Hotlinking یعنی سایتهای دیگر تصاویر شما را مستقیم از سرورتان بارگذاری میکنند و پهنای باند مصرف میکنند:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ - [NC,F,L]
فعال کردن فشردهسازی GZIP
فشردهسازی GZIP میتواند حجم فایلهای ارسالی به مرورگر را تا ۷۰ درصد کاهش دهد:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>
سوالات متداول
اگر فایل .htaccess را حذف کنم چه اتفاقی میافتد؟
وردپرس بدون .htaccess نمیتواند URL های سفارشی (Permalinks) را مدیریت کند. همه لینکها به جز صفحه اصلی با خطای ۴۰۴ مواجه میشوند. صفحه پیشخوان (wp-admin) ممکن است در دسترس نباشد. برای رفع مشکل، از طریق Settings → Permalinks دکمه Save Changes را بزنید.
چرا نباید کدهای .htaccess را بدون دانش کافی ویرایش کنم؟
یک خطای ساده در .htaccess میتواند کل سایت را با خطای ۵۰۰ Internal Server Error از دسترس خارج کند. همیشه قبل از هر تغییر بکآپ بگیرید و اگر به کدنویسی تسلط ندارید با متخصص مشورت کنید.
آیا میتوانم چندین فایل .htaccess در پوشههای مختلف داشته باشم؟
بله. هر پوشه میتواند فایل .htaccess جداگانهای داشته باشد که فقط روی آن پوشه و زیرپوشههایش اعمال میشود. این قابلیت برای محدود کردن دسترسی به پوشههای خاص مثل wp-admin یا uploads بسیار مفید است.
جمعبندی
فایل .htaccess یکی از مهمترین فایلهای یک سایت وردپرسی است که کنترل زیادی بر رفتار سرور و امنیت سایت میدهد. اگر تسلط و شناخت کافی به کدنویسی ندارید، اصلاً اقدام به تغییر در این فایل نکنید. قبل از هر ذخیرهکردن، حتماً از هاست خود یک فول بکآپ تهیه کنید. این فایل بسیار کاربردی است و لازم است هر سایت وردپرسی آن را داشته باشد، پس اگر سایت شما این فایل را ندارد، از طریق یکی از روشهای گفتهشده آن را ایجاد کنید.
امیدواریم این مقاله برایتان مفید بوده باشد. اگر سوالی دارید که پاسخش را پیدا نکردید، در قسمت کامنتها مطرح کنید، کارشناسان ما در کمتر از چند دقیقه پاسخ خواهند داد.
این مقاله را با دوستان خود به اشتراک بگذارید.
تنظیم Browser Caching با .htaccess
Browser Caching به مرورگر میگوید که فایلهای استاتیک (تصاویر، CSS، JS) را برای مدت مشخصی در کش نگه دارد تا در بازدیدهای بعدی نیازی به دانلود مجدد نباشد. این کار سرعت بارگذاری سایت را برای بازدیدکنندگان تکراری به طرز قابل توجهی افزایش میدهد:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 2 days"
</IfModule>
این کد مشخص میکند که تصاویر برای ۱ سال، فایلهای CSS و JS برای ۱ ماه، و سایر فایلها برای ۲ روز در کش مرورگر نگه داشته شوند. اعمال این تنظیم میتواند امتیاز PageSpeed سایت شما را در گوگل افزایش دهد.