کد ها و دستورات htaccess
htaccess چیست؟
فایل .htaccess (مخفف Hypertext Access) یک فایل پیکربندی برای وب سرورهای آپاچی است که به شما امکان می دهد URL های وب سایت خود را کنترل کنید و دسترسی به وب سایت و فایل های خود را کنترل کنید. “.htaccess” یک رشته متن در کد است که می توانید مستقیما وب سرور را کنترل کنید.
شما می توانید یک فایل htaccess. را در دایرکتوری root یا همان Public_html سایت خود قرار دهید تا روی همه دایرکتوری ها یا فقط در یک زیر دایرکتوری تاثیر بگذارد. htaccess فقط برای وب سرور آپاچی و لایت اسپید کار میکنه و برای وب سرور nginx این فایل تاثیری نداره و خونده نمیشه. بیشتر هاست ها مثل هاست وردپرس بلوسرور، از وب سرور لایت اسپید یا آپاچی استفاده میکنند که میتونین از این قابلیت htaccess استفاده کنید یا با خرید vps و راه اندازی وب سرور، میتونین وب سرور و سایتتون رو کنترل کنید.
htaccess برای چه استفاده می شود؟
فایل htaccess. برای مواردی مانند هدایت کردن URL ها به مکان های دیگر (ریدایرکت)، بازنویسی یا کوتاه کردن URL ها، مسدود کردن دسترسی به فایل ها و دایرکتوری های خاص روی سرور شما و حتی مسدود کردن دسترسی به سایت شما از یک آدرس IP خاص استفاده می شود.
فایل htaccess کجاست؟
این فایل عموما در public_html قرار میگیرد و تنظیمات این فایل بخاطر محل قرار گیری که در root پوشه اصلی یا همان public_html هست، تمام زیر پوشه ها و دایرکتوری ها را شامل میشود. اما شما همچنان میتوانید برای زیر پوشه های خود فایل htaccess جداگانه ای هم ایجاد کنید.
فایل htaccess وردپرس
# BEGIN WordPress 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] # END WordPress
فعالسازی Gzip در Htaccess
gzip برای کش کردن تصاویر، فونت ها، فایل های استاتیک در مرورگر کاربر هست، با فعال کردن این قابلیت در htaccess، فایل های استاتیک شما در مرورگر کاربر ذخیره میشود و برای دفعات بعد که کاربر سایت شمارو باز میکند، سایت شما سریعتر برای کاربر باز میشود، نمونه ای از دستورات Gzip :
<IfModule mod_deflate.c> # Compress HTML, CSS, JavaScript, Text, XML and fonts AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml # Remove browser bugs (only needed for really old browsers) BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent </IfModule> <ifModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$ mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_include mime ^text/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_include handler ^cgi-script$ </ifModule>
دستورات htaccess
Directory Index
با کد زیر میتوانید صفحه index پیش فرض را عوض کنید.
DirectoryIndex welcome.html welcome.php
Custom Error Pages
می توانید کاربران خود را به صفحه خطا هدایت کنید. البته حواستون باشه که صفحه html خطا با این اسم ها حتما داشته باشید.
ErrorDocument 404 error.html کدهای بیشتر صفحه خطا : ErrorDocument 400 /400.html ErrorDocument 401 /401.html ErrorDocument 403 /403.html ErrorDocument 404 /404.html ErrorDocument 500 /500.html ErrorDocument 502 /502.html ErrorDocument 504 /504.html
www را در URL خود حذف کنید
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC] RewriteRule ^(.*)$ http://yourdomain.com/\ [L,R=301]
منطقه زمانی را برای سرور خود تنظیم کنید
SetEnv TZ Asia/Tehran
کنترل دسترسی به فایل ها
htaccess اغلب برای محدود کردن یا ممانعت از دسترسی به فایل ها و پوشه های شخصی استفاده می شود و شما می توانید این کار را به این صورت انجام دهید:
deny from all
اگر می خواهید دقیق تر باشید و یک آدرس IP خاص را ممنوع کنید، می توانید از موارد زیر استفاده کنید
order allow,deny deny from XXX.XXX.XXX.XXX allow from all
برای چندین آدرس IP، می توانید از موارد زیر استفاده کنید
allow from all deny from 145.186.14.122 deny from 124.15
ریدایرکت 301
Redirect 301 /olddirectory/file.html http://www.domainname.com/newdirectory/file.html
Link Protection
اگر نگران مصرف پهنای باند سرور خود هستین، میتونین Link Protection اعمال کنین که عکس ها و فایل های شما در سرور یا هاست دیگران کار نکنه.
Options +FollowSymlinks RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/ [nc] RewriteRule .*.(gif|jpg|png)$ http://domainname.com/img/hotlink_f_o.png [nc]
اگر می خواهید کاربران را مجبور کنید فایل ها را به جای مشاهده در مرورگر، دانلود کنند، می توانید از دستورات زیر استفاده کنید
AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4
Rewrite URLs
اگر می خواهید URL های خود را کمی خوانا کنید (یعنی تغییر content.php?id=92 به content-92.html) می توانید قوانین «بازنویسی» زیر را اجرا کنید
RewriteEngine on RewriteRule ^content-([0-9]+).html$ content.php?id=$1
ریدایرکت به https
RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}