کد ها و دستورات 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/$1 [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}