htaccess. چیه و چطور ازش استفاده کنیم؟
htaccess. یه فایل تنظیمات قدرتمند برای وب سرور Apache هست با این فایل میتونی بدون دسترسی به کانفیگ اصلی سرور کلی تغییرات روی سایتت اعمال کنی
فایل htaccess. کجا قرار میگیره؟
توی پوشه اصلی سایت (معمولا public_html یا www) یه فایل متنی سادست که اسمش دقیقا .htaccess هست دقت کن که با نقطه شروع میشه و پسوند نداره
نکته مهم: این فایل روی وب سرورهای Nginx و LiteSpeed به صورت پیشفرض کار نمیکنه و مخصوص Apache هست
htaccess. چیکار میکنه؟
- ریدایرکت کردن آدرس ها
- مدیریت خطاها (۴۰۴، ۵۰۰ و...)
- افزایش امنیت
- بهی هسازی سرعت و کش
- بازنویسی URL ها
- مسدود کردن IP های مزاحم
- تنظیمات SSL و HTTPS
- محافظت از فایل ها و پوشه ها
ریدایرکت ساده
ریدایرکت یه صفحه به آدرس دیگه:
Redirect 301 /old-page.html /new-page.html
ریدایرکت کل سایت به یه دامنه دیگه:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^oldsite\.com [NC]
RewriteRule ^(.*)$ https://newsite.com/$1 [L,R=301]
ریدایرکت HTTP به HTTPS:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
ریدایرکت بدون www به با www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
مدیریت خطاها
صفحه شخصی سازی شده برای ارورها:
ErrorDocument 404 /error/404.html ErrorDocument 403 /error/403.html ErrorDocument 500 /error/500.html
الان هرکی به یه صفحه ناموجود بیاد به جای ارور خشک و خالی صفحه قشنگ خودت رو میبینه
افزایش امنیت
جلوگیری از دیدن محتویات پوشه:
Options -Indexes محافظت از فایل htaccess. خودش: <Files .htaccess> Order Allow,Deny Deny from all </Files>
مسدود کردن IP های خاص:
<RequireAll> Require all granted Require not ip 123.456.789.000 Require not ip 111.222.333.444 </RequireAll>
جلوگیری از Hotlinking (دزدیده شدن عکس ها):
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?your-site\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ - [NC,F,L]
بهینه سازی و کش
فعال کردن Gzip:
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript </IfModule>
کش مرورگر (Browser Cache):
<IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" </IfModule>
بازنویسی URL (URL Rewriting)
تبدیل URL های قشنگ به پارامتر:
RewriteEngine On RewriteRule ^product/([0-9]+)$ product.php?id=$1 [L] حالا کاربر میتونه به جای product.php?id=5 بره به product/5.
محافظت با رمز عبور
قفل کردن یه پوشه با رمز:
AuthType Basic AuthName "Protected Area" AuthUserFile /path/to/.htpasswd Require valid-user
فایل .htpasswd هم باید جداگانه با ابزار htpasswd ساخته بشه که شامل یوزرنیم و پسورد هست
تنظیم Default Page
تعیین صفحه پیش فرض پوشه:
DirectoryIndex home.php index.html الان اول میگرده دنبال home.php اگه نبود میره سراغ index.html.
افزایش محدودیت آپلود
php_value upload_max_filesize 100M php_value post_max_size 100M