فایل .htaccess یک فایل متنی برای تنظیم بعضی رفتارهای وبسرور Apache است. در سایتهای وردپرسی، این فایل معمولاً برای مدیریت لینکهای یکتا، ریدایرکتها و بعضی محدودیتهای دسترسی استفاده میشود. چون یک خطای کوچک در آن میتواند سایت را از دسترس خارج کند، قبل از هر تغییر یک نسخه پشتیبان از فایل فعلی نگه دارید.
فایل .htaccess چیست و چطور کار میکند؟
این فایل به Apache میگوید درخواستهای ورودی را در یک پوشه چگونه مدیریت کند. برای مثال میتوانید یک آدرس قدیمی را به آدرس جدید بفرستید یا دسترسی یک IP را محدود کنید. نام فایل با نقطه شروع میشود و به همین دلیل در بسیاری از File Managerها بهعنوان فایل مخفی نمایش داده میشود. سرورهایی مثل Nginx به شکل مستقیم از .htaccess استفاده نمیکنند، پس قبل از ویرایش باید نوع وبسرور سایت را بدانید.
فایل .htaccess کجاست؟ چطور آن را پیدا کنیم؟
در بیشتر سایتهای وردپرسی، فایل .htaccess در همان پوشهای قرار دارد که فایلهای اصلی وردپرس دیده میشوند. اگر فایل را نمیبینید، اول نمایش فایلهای مخفی را فعال کنید و بعد دوباره پوشه نصب سایت را بررسی کنید.
مسیر پیشفرض در دایرکتوری ریشه (public_html)
اگر وردپرس مستقیماً روی دامنه اصلی نصب شده باشد، معمولاً باید فایل .htaccess را داخل public_html پیدا کنید. در همان پوشه فایلهایی مثل wp-config.php و پوشههای wp-admin و wp-content هم دیده میشوند. اگر وردپرس در یک زیرپوشه نصب شده باشد، فایل مربوط به همان نصب را در همان مسیر بررسی کنید.
نمایش فایلهای مخفی (Hidden Files) در cPanel/DirectAdmin
در cPanel وارد File Manager شوید و از بخش Settings نمایش Hidden Files یا Dotfiles را فعال کنید. در DirectAdmin نیز File Manager را باز کنید و گزینه نمایش فایلهای مخفی را بررسی کنید. اگر بعد از این کار فایل ظاهر شد، قبل از ویرایش یک کپی از آن بسازید تا در صورت بروز خطا بتوانید سریع برگردید.
چطور فایل .htaccess بسازیم؟
اگر فایل واقعاً وجود ندارد، میتوانید آن را دستی بسازید. نام فایل باید دقیقاً .htaccess باشد و نباید پسوندی مثل .txt به انتهای آن اضافه شود. اگر مطمئن نیستید سرور از این فایل پشتیبانی میکند، بهتر است قبل از ساخت با پشتیبانی هاست بررسی کنید.
ساخت دستی از طریق کنترلپنل هاست
سادهترین روش این است که فایل را از داخل File Manager بسازید:
- وارد File Manager شوید و پوشه اصلی سایت را باز کنید
- گزینه ساخت فایل جدید را انتخاب کنید
- نام فایل را دقیقاً .htaccess وارد کنید
- فایل را باز کنید و فقط دستورهایی را که نیاز دارید داخل آن قرار دهید
- تغییرات را ذخیره کنید و سایت را بلافاصله بررسی کنید
ساخت و آپلود با ویرایشگر متن و FTP
میتوانید فایل را روی کامپیوتر با یک ویرایشگر متن ساده بسازید و بعد با FTP روی هاست قرار دهید. مهمترین نکته این است که فایل با نام .htaccess ذخیره شود، نه .htaccess.txt. بعد از آپلود هم مطمئن شوید فایل در پوشه درست سایت قرار گرفته است.
محتوای پیشفرض htaccess در وردپرس (Rewrite Rules استاندارد)
وردپرس از Rewrite Rules برای ساخت آدرسهای خوانا استفاده میکند. این قوانین باعث میشوند لینکهایی مثل /blog/example/ بدون فایل فیزیکی جداگانه باز شوند. اگر بخش مربوط به وردپرس حذف شده باشد، معمولاً میتوانید از پیشخوان به تنظیمات «پیوندهای یکتا» بروید و یکبار روی ذخیره تغییرات بزنید تا وردپرس قوانین را دوباره ایجاد کند.
نمونه رایج قوانین پیشفرض وردپرس به این شکل است:
# 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
اگر سایت داخل زیرپوشه نصب شده باشد یا تنظیمات هاست متفاوت باشد، این بخش میتواند کمی فرق کند. بنابراین بهتر است قوانین موجود سایت را با یک نمونه عمومی جایگزین نکنید مگر اینکه دلیل مشخصی داشته باشید.
مهمترین کاربردهای فایل htaccess
بیشتر کاربران .htaccess را برای چند کار مشخص استفاده میکنند؛ مثل ریدایرکت، انتقال به HTTPS، مدیریت آدرسها و محدودکردن بعضی دسترسیها. در ادامه هر کاربرد را جدا و ساده توضیح میدهیم.
ریدایرکتها (301، 302) و انتقال HTTP به HTTPS
ریدایرکت یعنی کاربر و موتور جستجو را از یک آدرس به آدرس دیگری بفرستید. ریدایرکت 301 برای جابهجایی دائمی و 302 برای انتقال موقت استفاده میشود. اگر یک صفحه برای همیشه به آدرس جدید منتقل شده، 301 معمولاً انتخاب مناسبتری است.
نمونه ساده برای انتقال دائمی یک صفحه:
Redirect 301 /old-page https://example.com/new-page
برای انتقال کل سایت از HTTP به HTTPS میتوان از Rewrite Rule استفاده کرد. اگر سایت پشت CDN یا Proxy قرار دارد، بهتر است تنظیم HTTPS را با روش پیشنهادی هاست انجام دهید تا حلقه ریدایرکت ایجاد نشود.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
بازنویسی URL برای ساختار لینکهای سئوپسند
بازنویسی URL یعنی سرور یک آدرس ساده را دریافت کند و پشت صحنه آن را به مسیر واقعی اجرا بفرستد. وردپرس برای پیوندهای یکتا از همین روش استفاده میکند. در بیشتر سایتهای وردپرسی لازم نیست این قوانین را دستی بنویسید، چون وردپرس آنها را خودش مدیریت میکند.
محافظت از هاتلینک (Hotlink Protection)
هاتلینک زمانی رخ میدهد که یک سایت دیگر تصویر شما را با آدرس مستقیم فایل روی سرور شما نمایش دهد. در این حالت فایل از هاست شما بارگذاری میشود و بخشی از پهنای باند شما مصرف میشود. میتوانید با قانون مناسب این دسترسی را محدود کنید، اما اگر از CDN یا سرویس خارجی برای تصاویر استفاده میکنید باید دامنههای مجاز را هم در نظر بگیرید.
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ – [F,L,NC]
مسدودسازی یا محدودسازی دسترسی بر اساس IP
میتوانید دسترسی یک IP مشخص را در Apache محدود کنید. این روش برای بعضی حملههای ساده یا محدودکردن بخشهای آزمایشی کاربرد دارد، اما اگر IP شما پویا باشد ممکن است بعداً خودتان هم دسترسی نداشته باشید. بنابراین قبل از اعمال محدودیت، IPها را دقیق بررسی کنید.
Require all granted
Require not ip 203.0.113.10
سفارشیسازی صفحه خطای 404
خطای 404 زمانی دیده میشود که آدرس درخواستی وجود نداشته باشد. با .htaccess میتوانید مشخص کنید سرور در این حالت چه صفحهای را نشان دهد. این صفحه بهتر است کاربر را دوباره به بخشهای مهم سایت هدایت کند.
ErrorDocument 404 /404.html
محافظت با رمز عبور از دایرکتوریها (htpasswd)
برای محافظت از یک پوشه میتوان از .htaccess در کنار فایل .htpasswd استفاده کرد. .htaccess قانون ورود را مشخص میکند و .htpasswd اطلاعات نام کاربری و رمز را نگه میدارد. بهتر است فایل .htpasswd خارج از پوشه عمومی سایت قرار بگیرد و مسیر کامل آن در تنظیمات نوشته شود.
AuthType Basic
AuthName “Restricted Area”
AuthUserFile /home/username/.htpasswd
Require valid-user
جمعبندی
فایل .htaccess برای مدیریت ریدایرکتها، لینکهای یکتا و بعضی محدودیتهای دسترسی کاربرد دارد. قبل از هر ویرایش یک نسخه پشتیبان بگیرید و بعد از ذخیره تغییرات، سایت را بررسی کنید. اگر خطای 500 دیدید، آخرین تغییر را برگردانید.







