بهینه‌سازی آدرس‌های وبلاگ مبتنی بر Blogengine.NET

در پست قبلی به دلایل استفاده از حروف کوچک در آدرس‌های وب‌سایت اشاره شد. حال مسئله‌ای که وجود دارد این است که در حالتی که شما از سیستم‌های مدیریت محتوا (CMS) و یا سیستم‌های مدیریت وبلاگ (Blog Engine) استفاده می‌کنید چطور این امکان را به سایت خود اضافه کنید. بعنوان مثال افزودن این امکان را برای سیستم مدیریت وبلاگ Blogengine.NET بررسی خواهیم کرد.


آدرس‌های پیش‌فرض در Blogengine شامل حروف بزرگ می‌باشد. چون Blogengine بر پایه‌ی دات‌نت طراحی شده‌است و بر روی وب‌سرور IIS اجرا می‌شود، می‌توان از امکانات IIS جهت تبدیل آدرس‌ها به حروف کوچک استفاده کرد.


برای این منظور از ماژول URL Rewrite استفاده خواهیم کرد. URL Rewrite ماژولی است که توسط آن می‌توانید آدرس‌های درخواستی وب‌سایت خود را به آدرس دلخواهتان تغییر دهید.
آدرس دریافت ماژول URL Rewrite
پس از دریافت ماژول آن را نصب کنید و سپس کد زیر را به فایل وب‌کانفیگ وبلاگ اضافه کنید.

<system.webServer>
  <rewrite>
    <rules>
      <rule name="LowerCaseRule" stopProcessing="true">
        <match url="[A-Z]" ignoreCase="false" />
        <action type="Redirect" url="{ToLower:{URL}}" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

توضیح کد:
این کد تمامی آدرس‌های درخواستی را به حروف کوچک (Lowercase) تبدیل می‌کند.

یک مشکل بزرگ!
احتمالاً پس از اضافه کردن کد فوق قسمت‌هایی از وبلاگ شما از کار خواهد افتاد. خصوصاً بخش‌های مدیریت وبلاگتان از قبیل مشاهده لیست پست‌ها و نظرات و ...
این مشکل بخاطر این است که یک سری از سرویس‌های مدیریت وبلاگ حساس به حروف کوچک و بزرگ هستند.
برای رفع این مشکل باید صفحاتی که شامل صفحات مدیریت وبلاگتان می‌باشند، یعنی صفحاتی که پس از لاگین کردن با حساب مدیر وبلاگ قابل مشاهد هستند را از قسمت تغییر آدرس مستثنی کرد. بعلت اینکه این صفحات، صفحات عمومی نیستند پس نیازی هم به رتبه‌بندی این صفحات در موتورهای جستجو نیست.
بعلت اینکه نام کاربر در آدرس صفحات مدیریت وبلاگ وجود دارد، بعنوان مثال در آدرس http://www.weblog.com/admin/Posts.aspx نام کاربر (admin) وجود دارد، پس می‌توان تنظیم کرد که تمامی صفحاتی که در آنها کلمه "/admin/" و یا کلمه "/api/" وجود دارد نادیده گرفته شوند.
برای انجام این کار کد را به این شکل تغییر دهید:

<system.webServer>
  ...
  <rewrite>
    <rules>
      <rule name="LowerCaseRule" stopProcessing="true">
        <match url="[A-Z]" ignoreCase="false" />
        <conditions>
          <add input="{URL}" matchType="Pattern" pattern="^.*/admin/.*$" ignoreCase="false" negate="true" />
          <add input="{URL}" matchType="Pattern" pattern="^.*/api/.*$" ignoreCase="false" negate="true" />
        </conditions>
        <action type="Redirect" url="{ToLower:{URL}}" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>


اجبار به استفاده از www در آدرس‌ها
یکی دیگر از مواردی که باعث اختلاف در آدرس‌های مشابه سایت می‌شود وجود یا عدم وجود www در آدرس سایت می‌باشد. برای افزودن خودکار www به تمامی آدرس‌های سایت نیز می‌توانید از ماژول URL Reweiter استفاده کرد.
برای این کار قطعه کد زیر را نیز به وب کانفیگ وبلاگ یا سایت خود اضافه کنید.
<system.webServer>
  ...
  <rewrite>
    <rules>
      ...
      <rule name="Add www" patternSyntax="Wildcard" stopProcessing="true">
        <match url="*" />
        <conditions>
          <add input="{HTTP_HOST}" pattern="www.yoursite.com" negate="true" />
        </conditions>
        <action type="Redirect" url="http://www.yoursite.com/{R:1}" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>


حال اگر آدرس وبلاگ و یا سایت بصورت yoursite.com وارد شود بصورت خودکار به آدرس www.yoursite.com منتقل خواهد شد.

دلایل عدم استفاده از حروف بزرگ در آدرس‌های وب‌سایت

یکی از مسائل مهمی که در حین ایجاد یک وب‌سایت باید درنظر گرفته شود، استفاده از حروف کوچک در URLها می‌باشد. بعنوان مثال دو آدرس زیر را در نظر بگیرید:

http://www.example.com/about
http://www.example.com/About

هر دو آدرس به یک صفحه مشخص اشاره می‌کنند.  اما آدرسی که در آن تماماً حروف کوچک استفاده شده است، بهتر است. در ادامه به دلایل این مسئله می‌پردازیم.

پردازش آدرس‌ها در سرورهای مختلف متفاوت است

اگر وب‌سایت شما بر روی یک سرور ویندوزی باشد، هر دو آدرس http://www.example.com/about و http://www.example.com/About یکسان درنظر گرفته شده و به یک صفحه ارجاع داده می‌شوند. ولی اگر سرور وب‌سایت شما لینوکسی باشد، آنگاه هر دو آدرس، دو آدرس مجزا در نظر گرفته می‌شود. یعنی یکی از آدرس‌ها به صفحه مورد نظر ارجاع داده می‌شود و آدرس دوم با خطای 404  (صفحه یافت نشد)  مواجه می‌شود!


داشتن دو آدرسی که به یک صفحه  اشاره می‌کند برای رتبه‌بندی موتورهای جستجو مناسب نمی‌باشد

همانطور که قبلاً اشاره کردیم اگرچه در سرورهای ویندوزی هر دو آدرس http://www.example.com/about و http://www.example.com/About به یک صفحه واحد ارجاع داده می‌شود اما موتورهای جستجو این دو آدرس را دو صفحه مجزا در نظر می‌گیرند که این از لحاظ رتبه‌بندی صفحه مورد نظر در موتورهای مناسب نیست و رتبه صفحه موردنظر کمتر از مقدار واقعی آن خواهد شد.


نتیجه‌گیری:

حتماً در حین طراحی و یا راه‌اندازی وب‌سایتتان این مسئله را در نظر داشته باشید که تمامی آدرس‌های وب‌سایتتان از حروف کوچک تشکیل شده باشد