آموزش htaccess

آموزش کار با فایل htaccess، ایجاد، ویرایش، تغییر و دانلود

فایل htaccess یا Hypertext Access (اچ تی اکسز) یک فایل متنی با قابلیت کنترل صفحات وب می باشد نقطه "." شروع و در وب سرور آپاچی فقط قابل اجراست.

تقریبا 70 درصد وب با php و cms ها یا فریمورک های php در حال سرویس دهی هستند همیشه یک فایل .htaccess در پروژه های خود می بینید که این فایل یکسری وظایف خاصی دارد در واقع این فایل یک فایل ساده پیکربندی برای وب سرور آپاچی است شما می توانید با این فایل دسترسی به سایت و نحوه عملکرد آن را کنترل کنید مثلا میزان امکان آپلود فایل در php تا چند مگابایت باشد این فایل به شما کمک می کند تنظیمات پیش فرض و فعلی وب سرور آپاچی را تغییر دهید.

برای ساخت این فایل شما می توانید حتی با برنامه notepad اقدام به ساخت و ویرایش فایل داشته باشید اما بیشتر کنترل پنل های موجود مثل دایرکت ادمین، سی پنل و ... هم این فایل را می شناسند و امکان ویرایش را برای شما آماده کرده اند.

در نظر داشته باشید این فایل در پوشه (دایرکتوری) خود می تواند تنظیمات آپاچی را تغییر دهد برای اینکه این تنظیمات را بتوانید به کل پروژه اعمال کنید می توانید این فایل را در ریشه قرار دهید (در هاست ها پوشه public_html).

نکته بعدی که باید یاد بگیرید این است که می توانید در هر پوشه فایل htaccess داشته باشید و زیرشاخه دستورات مورد نظر خود را در دایرکتوری فعلی داشته باشد.

آموزش htaccess

آموزش htaccess توسط جاب تیم برای دوست داران زبان php به صورت کامل همراه با مثال های متعدد آماده شده تا بتوانند هم دستورات را یاد بگیرند و هم این فایل را در اختیار داشته باشند.

زمان مطالعه: 3 دقیقه
بازدید: 4060
پرسش و پاسخ: 0

فایل htaccess چیست؟

فایل htaccess یا Hypertext Access (اچ تی اکسز) یک فایل متنی ساده است این فایل نحوه نمایش صفحات وب را کنترل می کند و با علامت نقطه "." شروع می شود این فایل عموما برای وب سرور آپاچی فقط قابل اجراست مگر اینکه در وب سرورهای دیگر مثل nginx اجازه اجرای این فایل داده شود دقت کنید فایل هایی که با علامت نطقه شروع می شوند عموما در کنترل پنل های وب مخفی هستند مگر تنظیمات لازم برای نمایش انجام شود.

این فایل را می توانید از طریق ftp یا مستیم از طریق وب آپلود کنید عموما از notepad++ برای این مورد هم استفاده می شود.

اگر فایل ما در مسیر یک دایرکتوری یا فولدر قرار داشته باشد، تمامی کدها و پیکربندی‌های تعریف شده‌ی موجود در این فایل بر روی دایرکتوری مذکور و نیز دایرکتوری‌های زیر مجموعه اجرا خواهد شد.

ما می توانیم تعاریف متفاوتی از این فایل داشته باشیم و همه این تعاریف از لحاظ علمی درست می باشد به مفهوم بعدی دقت کنید.

htaccess. یک فایل پیکربندی در سایت است که توسط وب سرور فعلی شما مثل آپاچی قابلیت اجرا دارد اگر این فایل در مسیر پروژه و زیر پوشه ها وجود نداشته باشد پیکربندی و سیاست های امنیتی از طریق فایل httpd.conf که در وب سرور شماست خوانده خواهد شد دستورات فایل htaccess. داخل یک دایرکتوری (پوشه) به فایل http.conf اولویت داده می شود.

htaccess در انجین آپاچی زبان ارتباطی سایت با وب سرور است با استفاده از این فایل، شما می‌توانید برای سرور یا هاست سایت خود قوانینی تعیین کنید و تمام فایل‌ها و دایرکتوری‌ های سایت را کنترل کنید. البته این قوانین در هاست های اشتراکی تا حدی محدود می باشد و شما به تمام امکانات دسترسی نخواهید داشت.

به یاد داشته باشید که همیشه از این فایل یک بکاپ تهیه کنید کوچکترین مشکلی در فایل موجود در ریشه موجب ارور در کل سایت خواهد شد.

Htaccess یک فایل متنی بدون پسوند است و قابلیت آن را دارد تا در هر پوشه ای از سایت قرار گیرد و رفتار هر پوشه را جداگانه با انجین آپاچی تنظیم نماید.

مسلط بودن به دستورات در این فایل کمک می کند سطح امنیت سایت را چندبرابر کنید تا دچار مشکل امنیتی نشوید (یکی از موارد امنیتی تنظیمات درست در این فایل می باشد).

نحوه ساخت، ایجاد و نوشتن فایل htaccess

ساخت فایل htaccess، ایجاد و نوشتن هر 3 یک مفهوم می باشد و نحوه ایجاد این فایل بسیار راحت است فقط کافیست با ویرایشگری مثل notepad ویندوز یک فایل ایجاد کنید و با اسم مورد نظر ذخیره کنید برای اینکار مراحل ذیل را انجام دهید:

  1. برنامه notepad در ویندوز را باز کنید.
  2. دستورات لازم خود را تایپ کنید.
  3. از منوی file گزینه save as را انتخاب کنید و اسم فایل را برابر با htaccess. قرار دهید.

دانلود فایل htaccess

دانلود فایل htaccess برای هر سایتی نیاز است ما در اینجا چند نمونه کد را در اختیار شما قرار داده ایم و شما می توانید با روش بالا که این فایل را ساختید کدهای ذیل را در آن قرار دهید.

دانلود فایل htaccess وردپرش

برای دانلود فایل htaccess وردپرش کافیست کد ذیل را در فایل مورد نظر خود کپی کنید:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

توضیحات یا کامنت نویسی در htaccess

ما در برنامه نویسی برای انتقال درست مفاهیم و کدها همیشه از یک توضیحات اضافی در کنار کد بهره میبریم این مورد در htaccess هم صادق است فقط کافیست در ابتدای خط خود از علامت مربع استفاده کنید مثل کد ذیل:

# comment line

کاربردهای فایل htaccess

فایل htaccess می تواند کاربردهای مختلفی برای مدیریت وب سایت داشته باشد ما برخی از موارد را به ترتیب توضیح داده ایم اما این موارد تنها کاربردهای این فایل نخواهد بود.

جایگزین فایل index با htaccess

فارق از اینکه سایت شما اولین فایل شروعش با پسوند html است یا php شما می توانید این فایل را دقیقا با یک نام دیگر و حتی پسوند دیگر به انجین خود معرفی کنید مثلا با استارت سایت بجای index.php یا index.html فایل behzad.php اجرا شود.

DirectoryIndex index.php index.html behzad.php

ایجاد صفحات خطای سفارشی با htaccess

عموما صفحات خطا باید طراحی شوند و نباید از صفحات پیش فرض انجین خود برای نمایش خطا استفاده کنید! اما گاهی شاید این نیازمندی را داشته باشید برای مثال در کد ذیل مسیر فایل نمایشی برای خطای 404 را تعیین می کنیم فایل دلخواه ما برای نمایش nofound.html در مسیر اصلی پروژه می باشد.

ErrorDocument 404 /nofound.html

جلوگیری از نمایش directory index با htaccess

در سایت هایی که طراحی می کنید اگر آدرس پوشه ای به صورت مستقیم وارد شود مرورگر تمام فایل های موجود در مسیر را در حالت عادی نمایش می دهد برای جلوگیری از این کار می توانید دستور ذیل را در یک فایل htaccess قرار داده و در پوشه مورد نظر قرار دهید. اگر نیاز دارید در تمام مسیرها این اتفاق بیفتد بهتر است کد ذیل را در بالاترین مسیر فعلی قرار دهید در سی پنل و دایرکت ادمین پوشه public_html:

# disable directory browsing
   Options –Indexes

دسترسی یا عدم دسترسی (Deny / Allow) برای برخی از ip ها در htaccess

فایل htaccess به شما کمک می کند تا دسترسی به سایت را برای برخی از آی پی ها (ip) محدود کنید مثلا نیاز دارید به سایت فقط از طریق ip های ایران دسترسی وجود داشته باشد و بقیه ip ها مسدود شوند دقت کنید شما می توانید یک رنج آی پی یا فقط یک آی پی خاص را مسدود کنید.

  1. روش مسدود کردن یک آی پی خاص با htaccess
Deny from 123.123.123.123
  1. روش مسدود سازی برای چند آی پی همزمان با htaccess

Deny from 111.111.111.111 222.222.222.222 333.333.333.333

دقت کنید شما می توانید یک دامنه خاص را فیلتر کنید یا بجای IPV4 از IPV6 استفاده کنید.

  1. روش مسدود سازی تمام آی پی ها و اجازه دسترسی فقط یک آی پی

در کد ذیل اول کل دسترسی ها بسته شده و در مرحله دوم فقط آپی مورد نظر باز و دسترسی داده شد

Order Allow,Deny
Allow from 45.144.126.13

ریدایرکت با استفاده از htaccess

Redirect /index.php https://www.site.com/folder/behzad.php

در مثال بالا ما فایل index.php در مسیر روت اصلی را به فایل behzad.php در مسیر دوم به صورت 301 ریدایرکت کردیم.

این قابلیت با عنوان Hotlink Protection در cPanel نیز قابل فعالسازی می‌باشد، و از کپی شدن اطلاعات شما در وبسایت‌های دیگر جلوگیری مینمایید. اگر بخواهیم با مثال توضیح دهیم یک سایت (عموما وبلاگ  ها) محتوای سایت شما را کپی می کنند یا از پهنای باند شما برای نمایش تصویر، ویدیو و ... در سایت خود استفاده میکنند با فعال سازی این مورد دیگر تصویری که برای شماست در سایت دیگر قابلیت نمایش با منبع شما را نخواهد داشت.

مثال از مسدود سازی کل دسترسی های hotlink با htaccess

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www\.)siteName.com/.*$ [NC]

RewriteRule \.(gif|jpg|jpeg|mp3|png|pdf|zip)$ - [F]

در مثال بالا دسترسی به فایل های gif،jpg،jpeg،mp3،png،pdf،zip را برای سایتهای دیگر می بندیم و با خطای 404 مواجه می شوند دقت کنید آدرس سایت شما باید با sitename.com جایگزین شود.

مثال از مسدود سازی دسترسی های hotlink با htaccess با محتوای متفاوت

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www\.)?siteName.com/.*$ [NC]

RewriteRule \.(gif|jpg)$ http://www.siteName.com/customError.jpg [R,L]

در مثال بالاسرقت تصاویر gif و jpg در سایت رقیب با یک تصویر به اسم customError.jpg نمایش داده خواهد شد!

اعمال رمز برای دسترسی به یک پوشه (دایرکتوری) در سایت password protecion با htaccess

برای جلوگیری از ورود ناخواسته هکرها و کنترل دسترسی به یک دایرکتوری کافیست فایل htpasswd. را با استفاده از سی پنل ایجاد کنیم و در فایل htaccess کدهای لازم برای فراخوانی نام کاربری و پسورد فایل htpasswd. اضافه کنیم.

AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/the/directory/you/are/protecting/.htpasswd
require valid-user

بلاک کردن دسترسی ربات های مخرب به سایت با htaccess

قبلا اشاره کردیم که با htaccess می توانید آی پی های مختلف و خاصی را بلاک کنید گاهی کاربری سعی در دانلود کل سایت دارد و به یکباره سعی می کند کل منابع سرویس شما را مصرف کند در این صورت دسترسی به سایت شما برای دقایق یا ساعتی برای کاربران دیگر قفل می شود و گاهی ربات های مخرب برای یافتن اطلاعات در سایت یا راه های یافتن نفوذ به سایت در حال خزیدن در صفحات سایت شما هستند دستورات ذیل کمک می کند تا از برخی موارد یاد شده جلوگیری کنید:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]
RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* – [F,L]

روش دوم برای جلوگیری از نمایش لیست محتوایی پوشه با htaccess

در ابتدای مقاله اشاره کردیم که با option index می توانید اینکار را انجام دهید اما روش بعدی استفاده از دستور ذیل است تا دسترسی به نمایش کل موجودی های یک دایرکتوری بسته شود.

IndexIgnore 

جلوگیری از نمایش پسوند خاص با IndexIgnore در htaccess

مثال به سادگی باید مفهوم را انتقال دهد در این مثال ما میخواهیم اول یک فایل zip را از نمایش خارج کنیم در مثال بعدی هم میخواهیم مجموعه ای از پسوند های خاص را از دسترس نمایش خارج کنیم.

IndexIgnore *.zip

مثال دوم : لیست پسوندهای خاص برا ignore

IndexIgnore *.zip *.jpg *.gif

جلوگیری از دستریس به فایل های include شده در یک صفحه با htaccess

ما نیاز داریم فایل های بزرگ را به فایل های کوچک تقسیم کنیم و سپس همه فایل ها را برای نمایش در یک صفحه فراخوانی کنیم که به این کار include کردن گفته می شود اما گاهی این فایل های قابل include بسیار مهم هستند و برای حفظ امنیت نیاز هست از دید عادی کاربران برداشته شود برای همین می توانیم با دستورات ذیل در فایل htaccess این کار را انجام دهیم.

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /includes/ .*$ [NC]
RewriteCond %{REQUEST_FILENAME} ^.+\.php$
RewriteRule .* – [F,NS,L]

جلوگیری از دسترسی غیرمجاز به فایل های حساس php مثل php.ini و php.cgi

برای جلوگیری از دسترسی غیرمجاز به دو فایل یاد شده کافیست در htaccess اصلی این خطوط کد را اضافه کنیم:

<FilesMatch "^php5?\.(ini|cgi)$">
Order Deny,Allow
Deny from All
Allow from env=REDIRECT_STATUS
</FilesMatch>

جلوگیری از ارسال کاراکتر و نشانه های غیرمجاز به سمت سرور با فایل htaccess

کاراکترهای خاص برای هک و دستورات sql injection و ... استفاده می شود و هکرها از این موارد اطلاعات بالایی دارند و برای همین شما باید کاراکترهای خاصی مثل (^&*$) را برای همیشه در url سایت فیلتر کنید برای این منظور دستورات ذیل را در بالاترین فایل htaccess خود قرار دهید:

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ [a-zA-Z0-9\.\+_/\-\?\=\&]+\ HTTP/ [NC]
RewriteRule .* – [F,NS,L]

حذف پوشه public در هاست برای پروژه های لاراولی با htaccess

در این مثال ما به شما می آموزیم که چگونه بدون نیاز به public در url باز هم سایت لاراولی اجرا شود:

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{REQUEST_URI} !^public
 RewriteRule ^(.*)$ public/$1 [L]
</IfModule> 

عملیات فشرده سازی فایل ها یا gzip از سمت سرور با کمک فایل htaccess

برای بالا بردن سرعت لود سایت نیاز هست فایل های سمت سرور فشرده سازی شوند و مرورگر حجم کمتری دیتا برای نمایش اطلاعات نیاز داشته باشد برای همین کل های فایل های مورد نظر را با استفاده از htaccess به صورت فشرده شده برای کلاینت با کد ذیل ارسال می کنیم سعی کنید این کد را در فایل اصلی خود قرار دهید:

<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>

در مثال بالا کل فایل های rss، فونت، جاوا اسکریپت، سی اس اس و html به صورت فشرده شده برای کلاینت ارسال می شود.

ریدایرکت سایت بدون www با کمک htaccess

در مبحث سئو همیشه تاکید بر کوتاه بودن url وجود دارد و ما نیاز داریم تا www را از ابتدای url های سایت حذف کنیم برای همین می توانیم با کد ذیل در htaccess این مورد را انجام دهیم:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

مخفی کردن پسوند فایل های php در url با کمک htaccess

گاهی ما نیاز داریم که پسوند خاصی را در url حذف کنیم و url های ما بدون پسوندهای html یا php و ... نمایش داده شوند ما در ذیل یک مثال از حذف پسوند php با کمک htaccess را برای شما آماده کردیم:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

فعال سازی کش مرورگر کلاینت برای فایل های استاتیک سایت با htaccess

عموما فایل های css، js و ... برای مدت طولانی تغییر نمی کنند و نیاز نیست مرورگر بازدید کننده سایت هر بار این موارد را دوباره دریافت و لود کند برای همین با دستورات ذیل کش برای فایل های عمومی خود را می توانید فعال کنید:

ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"

افزودن mime-type با htaccess

مرورگر ها عموما برای دانلود فایل از کاربر اجازه می خواهند که آیا فایل مورد نظر که با کلیک بر روی لینک درخواست داده شده دانلود شود یا خیر؟ برای جلوگیری از سوال مرورگر برای دانلود فایل های مورد نظر می توانید از کد ذیل استفاده کنید:

AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov

محدودسازی فایل های قابل اجرا و نمایش در سایت بوسیله htaccess

برای افزایش امنیت سایت و جلوگیری از اجرای برخی کدهای مخرب توسط مهاجمان با سایت نیاز هست اجرای بعضی از فایل ها را محدود کنید برای این کار می توانید مثل مثال ذیل عمل کنید:

Options +FollowSymlinks
RewriteEngine On
rewritecond %{REQUEST_FILENAME} !^(.+).css$
rewritecond %{REQUEST_FILENAME} !^(.+).js$
rewritecond %{REQUEST_FILENAME} !file.php$
RewriteRule ^(.+)$ /deny/ [nc]

ایجاد محدود در سایز آپلود فایل با htaccess

با استفاده از کد upload_max_filesize می توانید محدودیت حجم آپلودی در فرم را کمتر یا بیشتر کنیم تا از آپلود فایل های بزرگ جلوگیری کنیم و یا نه امکان آپلود فایل های بزرگ را در سایت ایجاد کنیم.

مثال امکان آپلود 20 مگ در سایت

php_value upload_max_filesize 20M

تنظیم میزان رم مورد استفاده با htaccess

شاید نیاز داشته باشیم منابع مورد استفاده زبان برنامه نویسی php در سایت را محدود کنیم مثلا میزان استفاده از رم را تا حدی گاهش دهیم مثال ذیل استفاده تا 250 مگابایت را برای سایت شما از رم فراهم می کند.

php_value memory_limit 256M

به یاد داشته باشید شما در هاست های اشتراکی نمی توانید این عدد را بیشتر از میزان رم کلی خود بالا ببرید!

محدود سازی حجم ارسال در فرم با htaccess

در ارسال فرم نیاز به محدود سازی پکت خواهید داشت بر فرض ما در هر آپلود تا 50 مگ نیاز داریم پس کد ذیل مشکل گشای کار ما خواهد بود.

php_value post_max_size 50M

مسدود سازی حملات xss با فایل htaccess

حملات xss با تزریق کد در فایل های مختلف صورت می گیرد و از محبوبترین نوع حملات در بین هکرها است برای جلوگیری از این حملات برای همیشه می توانید از کد ذیل استفاده کنید:

# Blocks some XSS attacks

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F,L]
</IfModule>

ریدایرکت دامنه ir به com با استفاده از فایل htaccess

عموما مشتریان شما دو دامنه خریده اند و از لحاظ سئو حضور دو دامنه کاملا خطاست و فقط باید یک دامنه وجود داشته باشد برای همین می توانید دامنه ir را به com با استفاده از htaccess انتقال دهید مثل مثال ذیل:

RewriteCond %{HTTP_HOST} ^example.ir [NC,OR]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301,NC]

انتقال دامنه ir با و بدون www به دامنه com

RewriteCond %{HTTP_HOST} ^example.ir [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.ir [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301,NC]

ریدایرکت درست http به https در وردپرس با htaccess

برای ریدایرکت http به https در وردپرس باید قطعه کد ذیل رو به فایل htaccess اضافه کنید:

RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

نسخه کامل فایل htaccess برای قراردادن در سایت های وردپرسی به صورت ذیل است:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /

RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
بهزاد میرزازاده
مسیر درست با پرسش های درست ساخته می شود

مشاهده تمام مطالب نویسنده