جلوگیری از کدگذاری اضافی URLها و بهبود ایندکس صفحه
- 1403/09/14
در گوگل کنسول هنگام بررسی تگهای canonical ممکن است خطایی به وجود بیاید که آدرسهای URL فارسی شما شناسایی نشده و دارای مشکل باشند، مانند:
https://example.com/articles/%da%86%d8%b1%d8%a7-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-salt-%d8%af%d8%b1-%d8%b1%d9%85%d8%b2%d9%86%da%af%d8%a7%d8%b1%db%8c-%d9%be%d8%b3%d9%88%d8%b1%d8%af%d9%87%d8%a7-%d8%b6%d8%b1%d9%88%d8%b1%db%8c-%d8%a7%d8%b3%d8%aa-%d8%a7%d9%85%d9%86%db%8c%d8%aa-%d8%a8%db%8c%d8%b4%d8%aa%d8%b1-%d8%af%d8%b1
اگر در تگها از این حالت برای نمایش URL استفاده کنید، ممکن است که خطای بالا را دریافت کنید:
<link rel="canonical" href="{{ request.build_absolute_uri|urlunquote }}">
علت ایجاد URLهایی با کدگذاری چندلایه معمولاً به نحوه مدیریت کدگذاری در سایت و لینکدهی نادرست برمیگردد.
مشکل از {{ request.build_absolute_uri }}
است که به صورت پیشفرض، URL را به همراه حروف فارسی کدگذاری میکند و این باعث ایجاد کدگذاری چندلایه در canonical URL میشود. برای حل این مشکل، باید URL را طوری تنظیم کنید که فقط یک بار کدگذاری شود.
import urllib.parse
from django import template
register = template.Library()
@register.filter
def urlunquote(value):
return urllib.parse.unquote(value)
کد بالا یک فیلتر سفارشی در Django ایجاد میکند که وظیفه باز کردن (unquote) کدگذاریهای URL را بر عهده دارد.
{% load custom_filters %} {# بارگذاری فیلتر سفارشی #}
<link rel="canonical" href="{{ request.build_absolute_uri|urlunquote }}">
رایگان ثبت نام کنید و اولین نفری باشید که از پست های جدید مطلع می شوید.