📄 خلاصه سریع (TL;DR)
فایل .htaccess یک فایل پیکربندی قدرتمند برای وبسرور Apache است که امکان تغییر تنظیمات سرور در سطح دایرکتوری را میدهد. با آن میتوانید ریدایرکت URL، محافظت با رمز، بهینهسازی سرعت و افزایش امنیت را انجام دهید.
فایل .htaccess چیست؟
فایل .htaccess (مخفف Hypertext Access) یک فایل پیکربندی برای وبسرور Apache است که به کاربران اجازه میدهد بدون دسترسی به فایل اصلی پیکربندی سرور (httpd.conf)، تنظیمات را در سطح دایرکتوری تغییر دهند.
💡 نکات کلیدی درباره .htaccess
- نام فایل با نقطه شروع میشود (فایل مخفی در لینوکس)
- در هر دایرکتوری میتواند یک فایل .htaccess داشته باشد
- تغییرات فوری اعمال میشوند (نیاز به ریستارت سرور نیست)
- روی Apache کار میکند (نه Nginx)
- استفاده نادرست میتواند سایت را از کار بیندازد
کاربردهای اصلی فایل .htaccess
فایل .htaccess برای موارد زیر استفاده میشود:
محافظت با رمز
محدود کردن دسترسی به فایلها و پوشهها
ریدایرکت URL
هدایت کاربران از URL قدیمی به جدید
بهینهسازی سرعت
فشردهسازی و کش کردن فایلها
افزایش امنیت
جلوگیری از دسترسی غیرمجاز
URL Rewriting
ایجاد URLهای تمیز و SEO-friendly
صفحات خطای سفارشی
نمایش صفحات 404 و 500 سفارشی
نحوه ایجاد فایل .htaccess
برای ایجاد فایل .htaccess این مراحل را دنبال کنید:
- یک فایل متنی جدید ایجاد کنید
- نام آن را .htaccess بگذارید (با نقطه در ابتدا)
- کدهای مورد نظر را اضافه کنید
- فایل را در دایرکتوری ریشه سایت (public_html) آپلود کنید
⚠️ توجه: قبل از هر تغییری در .htaccess، حتماً یک بکاپ از فایل بگیرید. یک خطای کوچک میتواند کل سایت را از کار بیندازد.
کدهای پرکاربرد .htaccess
۱. ریدایرکت HTTP به HTTPS
این کد تمام ترافیک HTTP را به HTTPS هدایت میکند (ضروری برای امنیت و SEO):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
۲. ریدایرکت WWW به Non-WWW (یا برعکس)
حذف www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
افزودن www:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [L,R=301]
۳. ریدایرکت یک صفحه خاص
Redirect 301 /old-page.html /new-page.html
# Redirect to external URL
Redirect 301 /old-page https://example.com/new-page
۴. صفحات خطای سفارشی
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
ErrorDocument 403 /errors/403.html
۵. فعالسازی فشردهسازی GZIP
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/json
</IfModule>
۶. تنظیم کش مرورگر (Browser Caching)
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
۷. محافظت با رمز عبور
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.htpasswd
Require valid-user
۸. محدود کردن دسترسی به IP خاص
Order deny,allow
Deny from all
Allow from 192.168.1.100
# Block specific IP
Order allow,deny
Allow from all
Deny from 123.456.789.0
۹. جلوگیری از Hotlinking تصاویر
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?yourdomain\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ – [F,NC,L]
۱۰. افزایش امنیت
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "SAMEORIGIN"
Header set Referrer-Policy "strict-origin-when-cross-origin"
# Hide .htaccess file
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
# Hide wp-config.php (WordPress)
<Files wp-config.php>
Order allow,deny
Deny from all
</Files>
ملاحظات عملکردی
⚠️ هشدار عملکرد: استفاده از .htaccess به جای پیکربندی اصلی سرور سرعت را کاهش میدهد. Apache باید برای هر درخواست فایل .htaccess را در تمام دایرکتوریهای والد جستجو کند. اگر به پیکربندی اصلی سرور دسترسی دارید، تنظیمات را در httpd.conf قرار دهید.
نکات امنیتی مهم
.htaccess پیشفرض وردپرس
وردپرس از فایل .htaccess برای URL Rewriting استفاده میکند. کد پیشفرض:
<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
سوالات متداول
چرا فایل .htaccess در هاست من نمایش داده نمیشود؟
فایلهایی که با نقطه شروع میشوند در لینوکس مخفی هستند. در File Manager سیپنل، گزینه «Show Hidden Files» را فعال کنید. در FTP Client نیز گزینه نمایش فایلهای مخفی را بررسی کنید.
سایتم بعد از تغییر .htaccess از کار افتاد. چه کنم؟
با FTP یا File Manager وارد هاست شوید و فایل .htaccess را بازیابی یا حذف کنید. اگر بکاپ دارید از آن استفاده کنید. اگر وردپرس است، فایل را حذف کرده و از Settings > Permalinks برای بازسازی استفاده کنید.
آیا .htaccess روی Nginx کار میکند؟
خیر، .htaccess فقط برای Apache است. Nginx از فایل پیکربندی متفاوت (nginx.conf) استفاده میکند. اگر هاست شما از Nginx استفاده میکند، باید کدها را به فرمت Nginx تبدیل کنید یا از پشتیبانی هاست کمک بگیرید.
تفاوت Redirect 301 و 302 چیست؟
301 (Permanent Redirect): ریدایرکت دائمی است و به موتورهای جستجو میگوید URL قدیمی را فراموش کنند. 302 (Temporary Redirect): ریدایرکت موقت است و موتورهای جستجو URL قدیمی را حفظ میکنند. برای SEO معمولاً 301 توصیه میشود.
چگونه .htaccess را برای افزایش سرعت سایت تنظیم کنم؟
۱) فشردهسازی GZIP را فعال کنید (mod_deflate)، ۲) کش مرورگر تنظیم کنید (mod_expires)، ۳) Keep-Alive را فعال کنید، ۴) ETag را غیرفعال کنید. این تنظیمات میتوانند سرعت بارگذاری را تا ۷۰٪ بهبود دهند.
هاست لینوکس با پشتیبانی کامل
با هاست لینوکس برتینا، تنظیمات .htaccess به راحتی انجام دهید.
جمعبندی
فایل .htaccess ابزار قدرتمندی برای پیکربندی وبسرور Apache است. با آن میتوانید ریدایرکت، امنیت، کش و بسیاری تنظیمات دیگر را اعمال کنید. اما به خاطر داشته باشید:
- همیشه قبل از تغییر بکاپ بگیرید
- تغییرات را روی محیط تست امتحان کنید
- از کدهای معتبر استفاده کنید
- برای عملکرد بهتر، تنظیمات را در httpd.conf قرار دهید




