آدرسهای سئوپسند در دیتالایف ۲۰: پیکربندی کامل و بدون محتوای تکراری
ساختار آدرس از آن دسته تصمیمهایی است که یک بار گرفته میشود و سالها با سایت میماند. عوض کردنش بعد از ایندکس شدن، یعنی ریدایرکت، افت موقت رتبه و مدتی سردرگمی خزندهها. بنابراین ارزشش را دارد که همان اول درست انجام شود.
مرحلهی صفر: mod_rewrite
پیش از هر تنظیمی مطمئن شوید بازنویسی آدرس روی سرور فعال است. فایل .htaccess در ریشهی سایت باید این بلوک را داشته باشد:
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
روی nginx معادلش یک try_files است:
location / {
try_files $uri $uri/ /index.php?$args;
}
اگر این مرحله انجام نشود، فعال کردن آدرس سئوپسند در پنل فقط باعث میشود کل سایت ۴۰۴ بدهد.
فعالسازی در پنل
پنل مدیریت ← تنظیمات اسکریپت ← تنظیمات آدرسها. گزینهی «استفاده از آدرسهای سئوپسند» را روشن کنید. این گزینه در فایل پیکربندی معادل allow_alt_url است.
در همان بخش، حالت آدرس مطلب را انتخاب میکنید. سه الگوی رایج:
| الگو | نمونه | مناسب برای |
|---|---|---|
| دسته + شناسه + نام | /blog/blog-tutorials/23-post-name.html | سایتهای محتوایی با دستهبندی معنادار |
| شناسه + نام | /23-post-name.html | وقتی مطلب ممکن است بین دستهها جابهجا شود |
| تاریخ + نام | /2026/08/post-name.html | سایتهای خبری با آرشیو زمانی |
توصیهی عملی: اگر مطالب شما احتمال دارد بعداً دستهبندیشان عوض شود، الگوی بدون دسته را انتخاب کنید. هر بار جابهجایی دسته در الگوی اول یعنی تغییر آدرس و نیاز به ریدایرکت.
rules.json — جایی که ساختار واقعاً تعریف میشود
در دیتالایف ۲۰ قواعد مسیریابی از هسته جدا شده و در engine/data/rules.json نگهداری میشود. هر قاعده سه بخش دارد:
"showfull": [
"/{category}/{newsid}-{news_name}.html",
"/index.php?newsid={newsid}",
"/{category:[^.]+}/{newsid:\d+}-{news_name:.*}.html"
]
- الگوی ساخت — دیتالایف با این الگو لینکهای داخل سایت را میسازد.
- آدرس داخلی — درخواست در نهایت به این شکل ترجمه میشود.
- الگوی تطبیق — عبارت باقاعدهای که آدرس ورودی با آن سنجیده میشود.
اگر خواستید ساختار دلخواه بسازید، هر سه بخش باید همخوان بمانند. مثلاً برای حذف پسوند .html از آدرس مطالب:
"showfull": [
"/{category}/{newsid}-{news_name}",
"/index.php?newsid={newsid}",
"/{category:[^.]+}/{newsid:\d+}-{news_name:[^/]*}"
]
سه هشدار جدی پیش از دست زدن به این فایل:
- پشتیبان بگیرید. یک ویرگول جا افتاده کل سایت را از کار میاندازد، چون JSON نامعتبر قابل تجزیه نیست.
- الگوی تطبیق را آنقدر باز نگذارید که با مسیرهای دیگر تداخل کند.
{news_name:.*}بدون پسوند، آدرس دستهها را هم میبلعد. - بعد از ویرایش، کش سیستم را پاک کنید تا قواعد دوباره خوانده شوند.
تداخل نام دسته با پوشههای واقعی
این مورد را کمتر جایی مینویسند و دقیقاً همان چیزی است که ساعتها وقت میگیرد: اگر نام مستعار یک دسته با نام یک پوشهی واقعی روی سرور یکی باشد، وبسرور پوشه را سرو میکند و درخواست هرگز به دیتالایف نمیرسد.
نامهای پرخطر: uploads، templates، engine، backup، language، public. اگر دستهای با نام templates ساختید و صفحهاش ۴۰۳ یا فهرست فایل نشان داد، مشکل همین است. راهحل: نام مستعار دسته را عوض کنید (مثلاً themes).
آدرسدهی درست شما را وارد نتایج میکند؛ برای گرفتن فضای بیشتر در همان نتایج میتوانید بخش پرسش و پاسخ ساختاریافته هم به مطالب اضافه کنید — افزونه پرسش و پاسخ (Simple FAQ).
جلوگیری از محتوای تکراری
بعد از فعال کردن آدرس سئوپسند، هر صفحه از دو مسیر در دسترس میماند: مسیر تازه و مسیر قدیمی index.php?newsid=…. برای گوگل این یعنی دو نسخه از یک صفحه.
۱. تگ canonical
دیتالایف تگ canonical را در خروجی {headers} میسازد. کافی است در main.tpl از این تگ استفاده کرده باشید و آن را با متاتگهای دستی جایگزین نکنید.
۲. صفحهبندی
صفحات دوم به بعد فهرستها معمولاً محتوای منحصربهفردی ندارند. در تنظیمات متاتگها، عنوان صفحات بعدی را با شمارهی صفحه متمایز کنید تا عنوانهای یکسان تولید نشود.
۳. نسخهی چاپی و آرشیو
اگر صفحهی چاپ و آرشیوهای تاریخی برایتان ترافیک ارگانیک نمیآورند، در robots.txt ببندیدشان:
User-agent: *
Disallow: /index.php?mod=print
Disallow: /*print:page
Disallow: /*do=lastcomments
Disallow: /*do=search
Disallow: /*action=mobile
Sitemap: https://example.com/sitemap.xml
انتقال از ساختار قدیمی
اگر سایت شما قبلاً ایندکس شده و حالا ساختار را عوض میکنید، ریدایرکت ۳۰۱ اجباری است — نه اختیاری. دیتالایف بخش «مدیریت ریدایرکتها» را در پنل دارد که برای تعداد محدود آدرس مناسب است.
برای انتقال گسترده، قاعدهی سراسری در .htaccess کارآمدتر است. نمونهی انتقال از الگوی بدون دسته به الگوی با دسته:
RewriteCond %{QUERY_STRING} ^newsid=([0-9]+)$
RewriteRule ^index.php$ /index.php?newsid=%1 [R=301,L]
و چند قاعدهی بهداشتی که بهتر است از روز اول داشته باشید:
# حذف www
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
# اجبار HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
آدرسدهی تنها یک تکه از سئوی فنی است؛ بقیهی تنظیمهای لازم در چکلیست تنظیمات پس از نصب جمع شده است.
بعد از انتقال چه کنید
- نقشهی سایت را از پنل بازسازی کنید و در سرچ کنسول دوباره ثبت کنید.
- گزارش «پوشش» سرچ کنسول را دو تا سه هفته پیگیری کنید؛ افزایش موقت خطاها طبیعی است.
- لینکهای داخلی را به آدرسهای تازه بهروز کنید. ریدایرکت کار میکند، ولی لینک مستقیم بهتر است.
- ریدایرکتها را حداقل یک سال نگه دارید. حذف زودهنگام یعنی از دست دادن اعتبار لینکهای خارجی.
جمعبندی
ساختار آدرس را قبل از انتشار محتوا نهایی کنید، ساده و پایدار نگهش دارید و به الگویی که هر بار جابهجایی دسته آدرس را عوض میکند تن ندهید. اگر مجبور به تغییر شدید، ریدایرکت ۳۰۱ کامل و نقشهی سایت تازه، تفاوت بین یک افت دو هفتهای و یک افت شش ماهه است.