
به اشتراک بگذارید

به اشتراک بگذارید
سئو | بلاگ وبداده
تنظیم Permalink در وردپرس و حل مشکلات پیوند یکتا
http://example.com/?p=123؛ پیشفرض وردپرس است، روی همهی سرورها کار میکند اما برای کاربر و سئو مناسب نیست.http://example.com/sample-post/؛ خوانا، سئوپسند و توصیهشده./index.php/ در ابتدای آدرس؛ مخصوص سرورهایی که بازنویسی آدرس کامل ندارند.%postname% (نام نوشته)، %category% (دسته)، %year%، %monthnum% و %post_id% بسازید. طبق مستندات وردپرس، ساختار را حتماً با %postname% یا %post_id% پایان دهید تا هر نوشته آدرس یکتای خودش را داشته باشد.
| ساختار | نمونه آدرس | مناسب برای | امتیاز سئو |
|---|---|---|---|
| ساده (Plain) | ?p=123 | سازگاری حداکثری روی هر سرور | ضعیف |
| روز و نام | /2026/06/19/post-name/ | سایتهای خبری زمانمحور | خوب |
| ماه و نام | /2026/06/post-name/ | مجلههای ماهانه و آرشیوی | خوب |
| عددی (Numeric) | /archives/123 | سایتهای با صفحات بسیار زیاد | متوسط |
| نام نوشته (Post name) | /sample-post/ | بیشتر سایتها، وبلاگ و فروشگاه | عالی |
| سفارشی (Custom) | /%category%/%postname%/ | سایتهای دستهبندیمحور حرفهای | عالی |
/%category%/%postname%/ هم گزینهی خوبی است. نکتهای که باید بدانید این است که پیشوندهای دسته و برچسب (پیشفرض category و tag) را میتوانید تغییر دهید اما طبق مستندات وردپرس نمیتوانید کاملاً حذفشان کنید..htaccess_old تغییر نام دهید و دوباره در صفحهی پیوندهای یکتا «ذخیره تغییرات» را بزنید تا وردپرس یک فایل تازه بسازد. اگر سرور اجازهی ساخت خودکار را نداد، محتوای پیشفرض زیر را دستی در فایل قرار دهید:# 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 WordPressApache# BEGIN WordPress و # END WordPress بنویسید، توسط خود وردپرس بازنویسی و پاک میشود. اگر قانون سفارشی دارید، آن را بیرون و بالای این بلوک بگذارید.wp-config.php فعال کنید:// این خط را درست بالای /* That's all, stop editing! */ در wp-config.php بگذارید
define( 'WP_DEBUG', true ); // فعالسازی حالت دیباگ
define( 'WP_DEBUG_LOG', true ); // ثبت خطاها در wp-content/debug.log
define( 'WP_DEBUG_DISPLAY', false ); // نمایشندادن خطا به بازدیدکنندهPHP# روی سرور Nginx فایل .htaccess وجود ندارد؛ این قانون را در بلوک server بگذارید
location / {
try_files $uri $uri/ /index.php?$args;
}Nginx| علت خطا | نشانه | راهحل |
|---|---|---|
| بههمریختن قوانین بازنویسی | همهی نوشتهها 404، صفحه اصلی سالم | ذخیره دوباره پیوند یکتا |
| خرابی یا نبود .htaccess | تغییرات ذخیره نمیشود | بازسازی فایل .htaccess |
| غیرفعال بودن mod_rewrite | پیوند زیبا اصلاً کار نمیکند | فعالسازی ماژول در سطح سرور |
| تداخل افزونه یا قالب | 404 بعد از نصب/فعالسازی افزونه | غیرفعالسازی موقت و آزمایش |
| سرور Nginx بدون قانون بازنویسی | فقط صفحه اصلی باز میشود | افزودن try_files در کانفیگ سرور |
| تغییر ساختار روی سایت قدیمی | صفحات قبلی ایندکسشده 404 میدهند | ریدایرکت 301 به آدرس جدید |
چون قوانین بازنویسی آدرس بههم میریزند. کافی است به «تنظیمات ← پیوندهای یکتا» بروید و بدون تغییر، روی «ذخیره تغییرات» بزنید تا قوانین بازسازی شوند. اگر رفع نشد، فایل .htaccess را با محتوای پیشفرض وردپرس جایگزین کنید و از فعالبودن mod_rewrite مطمئن شوید.
برای بیشتر سایتها گزینهی «نام نوشته» (Post name) بهترین انتخاب است؛ آدرسی کوتاه و پر از کلمات کلیدی میسازد. سایتهای دستهبندیمحور میتوانند از ساختار سفارشی شامل دسته و نام نوشته استفاده کنند.
روی سایت تازهتأسیس خیر. اما روی سایتی که در گوگل رتبه دارد، تغییر ساختار همهی آدرسهای قبلی را میشکند و باعث افت رتبه میشود؛ مگر اینکه برای آدرسهای قدیمی ریدایرکت 301 به آدرسهای جدید تنظیم کنید.
این فایل در پوشهی ریشهی وردپرس (معمولاً public_html) قرار دارد و چون با نقطه شروع میشود، مخفی است. در فایلمنیجر سیپنل گزینهی «نمایش فایلهای مخفی» (Show Hidden Files) را فعال کنید. اگر اصلاً وجود نداشت، با ذخیرهی دوبارهی تنظیمات پیوند یکتا ساخته میشود.
روی Nginx فایل .htaccess وجود ندارد و قوانین بازنویسی باید در کانفیگ سرور با دستور try_files تعریف شوند. این کار به دسترسی سطح سرور نیاز دارد؛ روی هاستهای اشتراکی معمولاً از قبل تنظیم شده، در غیر این صورت از پشتیبانی هاست کمک بگیرید.
این خطا زمانی ظاهر میشود که در فیلد ساختار سفارشی فقط متن ثابت نوشتهاید و هیچ تگ ساختاری مثل %postname% یا %post_id% نگذاشتهاید. کافی است حداقل یک تگ معتبر (ترجیحاً در انتها %postname%) به ساختار اضافه کنید.
بهصورت کامل خیر؛ طبق مستندات وردپرس میتوانید مقدار پیشفرض «category» را به چیز دیگری تغییر دهید اما نمیتوانید آن را خالی بگذارید. برخی افزونههای سئو راهکارهایی برای پنهانکردن این پیشوند دارند که باید با احتیاط و همراه با ریدایرکت استفاده شوند.
سادهترین نشانه این است که پیوند یکتای زیبا (مثل نام نوشته) درست کار کند؛ اگر با انتخاب این حالت همهی صفحات 404 شدند، احتمالاً mod_rewrite غیرفعال است. برای بررسی دقیق میتوانید از پشتیبانی هاست بپرسید یا با اسکریپت phpinfo ماژولهای Apache را ببینید.