آموزش حذف پسوند html و php از آدرس سایت با استفاده از htaccess
اگر از پایه اقدام به راه اندازی سایتی (استتیک) کرده باشید، بدون اینکه از سیستم های مدیریت محتوا کمک بگیرید، احتمالا متوجه شده اید که در بارگذاری صفحات سایتتان (مثلا اگر سایت شما html باشد) تمامی آدرس ها به پسوند html ختم میشوند. مثلا اگر بخواهید صفحه تماس با مای سایت را باز کنید احتمالا باید چیزی مثل contact.html را در ادامه آدرس دامنه سایتتان در نوار آدرس تایپ کنید. وجود این پسوند ها علاوه بر اینکه از زیبایی آدرس میکاهد، دسترسی مستقیم به صفحات سایتتان را نیز تا حدی سخت تر خواهد کرد.
در آموزش امروز قصد داریم نحوه حذف پسوند هایی از قبیل html یا php و یا htm را از انتهای آدرس سایت، بررسی کنیم. از شما دعوت میکنیم در ادامه این آموزش با مسترکد همراه شوید. در پایان، به شما نحوه اضافه کردن اسلش به انتهای آدرس را آموزش خواهیم داد تا در صورت نیاز از آن بهره مند شوید.
فایل .htaccess چیست؟
فایل دات اچ تی اکسس (بله، نقطه در ابتدای نام فایل قرار دارد، از اینکه در عنوان به نظر بر عکس میرسد، عذر خواهی میکنیم!) یک فایل ASCII/ متنی ساده است که میتوانید به آسانی آن را با ویرایشگر های متنی مثل نوت پد ویرایش کنید. دقت کنید که نام کامل این فایل فقط .htaccess است و هیچ چیزی قبل از علامت نقطه وجود ندارد.
به علت وجود نقطه در ابتدای نام فایل، ممکن است این فایل در هاست شما مخفی باشد و لازم باشد که نمایش فایل های مخفی را فعال کنید. اگر فایل .htaccess ای در هاست شما موجود نیست، میتوانید به سادگی فایلی با این نام ایجاد کرده و سپس ادامه آموزش را دنبال کنید. اگر هم این فایل از قبل موجود است میتوانید دستوراتی که در ادامه درج میکنیم را به انتهای این فایل اضافه کنید. اگر فایل شما دارای محتوا است توصیه میکنیم پیش از ایجاد تغییرات، از آن بکاپ تهیه کنید.
برخی عملیات قابل پیاده سازی با htaccess عبارتند از :
- هدایت کاربران و ریدایرکت به صفحات و آدرس های دیگر
- محافظت از فایل ها و فولدر ها
- بلاک کردن IP های خاص
- جلوگیری از لینک دهی مستقیم به تصاویر سایت
- بازنویسی و تغییر آدرس ها
- مشخص کردن صفحات خطای سفارشی
تمرکز ما در این آموزش بر روی بازنویسی آدرس ها خواهد بود.
حذف پیشوند html و php از فایل ها
فرض کنیم مایلید در سایتتان آدرس domain.com/contact.php به آدرس domain.com/contact تغییر یافته و پسوند php از انتهای این آدرس حذف شود. برای انجام این کار کافی است از کد زیر استفاده کنید :
1 2 3 | RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] |
حالا اگر بخواهید همین کار را برای صفحات دارای فرت html انجام دهید باید خط آخر را با دستور زیر جایگزین کنید :
1 | RewriteRule ^([^\.]+)$ $1.html [NC,L] |
حال اگر بخواهید در جایی از سایت خود به صفحه تماس با ما لینک بدهید کافی است آدرس domain.com/contact را وارد کنید و دیگر نیاز به استفاده از پسوند فایل نیست. مثلا :
1 | <a href="https://domain.com/contact" title="contact us">تماس با ما</a> |
افزودن اسلش به انتهای آدرس
در اینجا کاری به مبحث اینکه آیا لازم است به انتهای آدرس اسلش اضافه شود یا خیر نداریم. اما اگر مایلید این کار را انجام دهید به طور کلی بخش های قبلی آموزش را نادیده بگیرید و فقط از کد زیر استفاده کنید :
1 2 3 4 5 6 7 8 | RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/$ $1.php RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ RewriteRule (.*)$ /$1/ [R=301,L] |
این کد علاوه بر حذف پسوند فایل های php، به انتهای آدرس نیز اسلش اضافه خواهد کرد. اگر بخواهید همین کار را برای فایل های html انجام دهید باید خط های 3 و 4 را بر اساس نیاز تغییر دهید تا بجای پسوند php، پسوند html مد نظر قرار بگیرد.
در پایان امیدواریم از این آموزش نسبتا کوتاه و ساده استفاده کرده باشید.
من تست کردم اما اتفاقی نیفتاد
اتفاقی نباید بیفته.
فقط باید بتونید آدرس فایل رو بدون پسوند مورد دسترسی قرار بدید.
دمت گرم
کوتاه و مختصر 🙂
سلام خیلیی ممنون از آموزش خوبتون
فقط بنده یک سوال داشتم
مثلا اگه بخواییم در ادرس زیر اون برگه product باز بشه باید چیکار کنیم؟
https://domain.com/product/dgk-2385474
ببین میخواییم در لینک بالا اون dgk-2385474 رو به فایل product.php ارسال کنیم که با کد های بالا پسوندس رو حذف کردیم و شده product. حالا ما وقتی لینک بالا رو باز میکنیم ارور ۴۰۴ میده آیا راه حلی هست که بجای رجوع به اخر لینک به یک فایل قبل یعنی product رجوع کنه؟
سلام ببخشد من یه سایت با وردپرس بالا آوردم امابعد کمی کار برروی تنظیمات الان میبینم وقتی اسم سایتم رو سرچ میکنم تو مرورگر خود به خود به انتهای نام دامین من یه کد اضافه میشه .آیا راهی هست این کد رو حذف کنم؟
اسم سایتم