بهینه‌سازی آدرس‌های وبلاگ مبتنی بر 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 منتقل خواهد شد.