admin
12-02-2019, 09:58 PM
mod_rewrite چیست و چگونه از آن در سئو استفاده کنیم؟
در این مطلب قصد داریم که به شما توضیح دهیم چگونه می توانید با ستفاده از ماژول mod_rewrite در وب سرور Apache به حل مشکلات سئو بپردازید، مشکلاتی که خیلی از وبمسترها با آن مواجهه پیدا می کنند. ماژول mod_rewrite ماژولیست که ابزار قدرتمندی برای تصحیح یو آر ال ها در اختیار شما می گذارد.
ماژول mod_rewrite چیست؟
ماژول mod_rewrite ماژولیست که در اغلب سرور های لینوکسی به صورت پیشفرض نصب شده است. تنها کافیست که از پشتیبان سرور خود بخواهید که آن را برای شما در صورت غیر فعال بودن، فعال کند.
ماژول mod_rewrite یو آر ال هایی که توسط مرورگر درخواست می شود را مدیریت کرده و محتوای مورد نظر را به مرورگر تحویل می دهد. این فرایند به کلی در سمت سرور انجام شده و مرورگر از جزییات آن اطلاعی پیدا نمی کند. نوع عملکرد این ماژول با ریدایرکت کاملا متفاوت است. در ریدایرکت صرفا مرورگر به مکان متفاوتی از سرور منتقل می شود.
ماژول mod_rewrite موجب مخفی شدن نحوه و منبع ارائه محتوا شده و به همین علت در افزایش امنیت سایت بسیار موثر است. این ماژول موجب افزایش راندمان وب سایت از دید موتورهای جستجو نیز می شود، چرا که یو آر ال ها را به صورت استاتیک به کاربران ارائه می دهد. ماژول mod_rewrite جنبه متغییر بودن یو آر ال ها را از بین برده و با استاتیک کردن آنها، موجب کاهش عدم سازگاری و افزایش دیده شدن وب سایت می گردد.
چگونه می توان از ماژول mod_rewrite برای ارتقا سئو استفاده کرد؟
ماژول mod_rewrite در جلوگیری از محتوای تکراری مورد استفاده قرار می گیرد و به علاوه می تواند یو آر ال ها نامعتبر و تغییر نام داده شده را به آدرس های صحیح ریدایرکت کند. هم چنین ایجاد یو آر ال های مورد پسند موتورهای جستجو از دیگر کارکرد های این ماژول است. ماژول mod_rewrite می تواند در صورت استفاده صحیح، موجب افزایش پیج رنک و رتبه سایت در موتورهای جستجو شده و بدین واسطه بازدید کنندگان بیشتری برای سایتتان ایجاد نماید.
قبل از استفاده از این ماژول می بایست فایل متنی با نام .htaccess در مسیر روت سایت ایجاد کنید. در صورتی که از سیستم عامل ویندوز استفاده می کنید، فایلی با نام htaccess.txt در سیستم خود ایجاد کرده و پس از انتقال آن به هاست خود، آن را به .htaccess تغییر نام دهید.
اگر نمی دانید که mod_rewrite در وب سایت شما فعال است، کافیست فایل .htaccess را ویرایش کرده و کدهای زیر را در آن قرار دهید:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^mod_rewrite\.html$ / [L]
در صورت فعال بودن و رفتن به آدرس Example Domain (http://www.example.com/mod_rewrite.html) مشاهده می کنید که پیغامی مبتنی بر فعال بودن آن مشاهده خواهید کرد. در هر حال می توانید طی یک تیکت از پشتیبانان هاست این موضوع را جویا شوید.
در ادامه به مثال هایی خواهیم پرداخت که با استفاده از ماژول mod_rewrite قابل پیاده سازی بوده و تاثیر زیادی بر روی سئو خواهند گذاشت.
1. جلوگیری از محتوای تکراری با mod_rewrite
با استفاده از mod_rewrite می توانید حالت های مختلف نام دامنه و آدرس یو آر ال ها را به یک شکل واحد تبدیل کنید. به عنوان مثال صفحه اصلی یک سایت می تواند دارای آدرس هایی به شکل زیر باشد:
Example Domain (http://www.example.com/)
Example Domain (http://example.com/)
Example Domain (http://www.example.com/index.html)
با این حال از نظر فنی تمام یو آر ال های بالا متفاوت از یکدیگر هستند و وب سرور می تواند محتوای کاملا متفاوتی به ازای هر یو آر ال نمایش دهد. اما در اغلب مواقع وب سرور ها محتوای یکسانی را به ازای هر یک از این یو آر ال ها نمایش می دهند و این مسئله موجب ایجاد مشکل محتوای تکراری می شود. شما می توانید با ریدایرکت نسخه بدون www و نسخه دارای index.html به نسخه با www این مشکل را حل کنید.
کد زیر نسخه بدون www را به نسخه با www ریدایرکت می کند:
RewriteEngine On
# Redirect non-www and IP addresses to www.
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
کد زیر نیز نسخه دارای index.html به نسخه بدون این عبارات ریدایرکت می شود:
# Redirect direct client requests for "<anything>/index.html" to "<anything>/"
RewriteRule ^(([^/]+/)*)index\.html http://www.example.com/$1 [R=301,L]
2. ریدایرکت یو آر ال های جا به جا شده با mod_rewrite
در بعضی مواقع پیش می آید که شما می خواهید آدرس های تعدادی از محتواهای سایت را تغییر داده و در عین حال نمی خواهید که پیج رنک سایت و رتبه آن صفحات از بین برود. همچنین نمی خواهید که کاربر با رفتن به آدرس قبلی با خطای 404 مواجه شود. تنها راه برای حفظ پیج رنک و حفظ کاربران سایت ریدایرکت یو آر ال های قدیمی به یو آر ال های جدید است:
RewriteEngine On
# Redirect relocated urls to the new direction
RewriteRule ^oldpage\.html$ Example Domain (http://www.example.com/newpage.html) [R=301,L]
RewriteRule ^directory/oldpage\.html$ http://www.example.com/directory/newpage.html [R=301,L]
زمانی که میخواهید یک پوشه را به پوشه جدید نقل مکان دهید، کد زیر کارساز خواهد بود:
# Redirect relocated directories to the new directories
RewriteRule ^olddir/(.*) http://www.example.com/newdir/$1 [R=301,L]
3. ریدایرکت آدرس های نامعتبر با استفاده از mod_rewrite
ریدایرکت صفحات نامعتبر به صفحات موجب سایت موجب حفظ پیج رنک و عدم مشاهده خطای 404 در سایت گردد. مجموعه کدهای زیر بسیاری از غلط های رایج املایی را تصحیح می کند:
RewriteEngine On
#+---------------------------------
#+ - BEGIN: URL fixup redirect routine
#+---------------------------------
# Get the requested URI, query string and hostname.
RewriteCond %{REQUEST_URI} ^(/[^?]*)([?].*)?$
RewriteRule . - [E=myUri:%1,E=myQuery:%2]
# Replace hmtl, htlm, and thml file extensions with html extension.
RewriteCond %{ENV:myUri} ^(.*)[.,](hmtl|htlm|thml)$ [NC]
RewriteRule . - [E=myRedirect:yes,E=myUri:%1.html]
# Replace comma(s) or multiple filetype delimiter periods in the url
# with a single period.
RewriteCond %{ENV:myUri} ^(.*)([,.]{2,}|,)((s?html?|php[1-9]?|aspx?|pdf|xls).*)$ [NC]
RewriteRule . - [E=myRedirect:yes,E=myUri:%1.%3]
# Remove invalid trailing characters
RewriteCond %{ENV:myUri} ^([/0-9a-z._\-]*)[^/0-9a-z._\-] [NC]
RewriteRule . - [E=myRedirect:yes,E=myUri:%1]
# Remove trailing punctutation
RewriteCond %{ENV:myUri} ^(.*)[._\-]+$
RewriteRule . - [E=myRedirect:yes,E=myUri:%1]
# Do the external 301 redirect only if needed and the resource exists
# at the corrected URI.
RewriteCond %{ENV:myRedirect} ^yes$ [NC]
RewriteCond %{DOCUMENT_ROOT}%{ENV:myUri} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{ENV:myUri} -d
RewriteRule . http://www.example.com%{ENV:myUri}%{ENV:myQuery} [R=301,L]
#+---------------------------------
#+ - END: URL fixup redirect routine
#+---------------------------------
4. یو آر ال های مورد پسند موتورهای جستجو با mod_rewrite
موتورهای جستجو به قابل فهم بودن یو آر ال ها اهمیت زیادی می دهند و از این رو این مسئله در وب سایت امری ضروریست. دو یو آر ال زیر را در نظر بگیرید:
یو آر ال دارای استرینگ: http://www.example.com/widgets.php?cat=blue&page=1
یو آر ال پس از به کار بردن mod_rewrite: http://www.example.com/widgets.php?cat=blue&page=1
اغلب افراد یو آر ال دوم را ترجیح می دهند و موتورهای جستجو نیز علاقه بیشتری به این نوع یو آر ال ها دارند. با استفاده از کد زیر می توان برای این مثال به این مهم دست یافت:
RewriteEngine On
RewriteRule ^widgets/(.*)/page(.*)\.php /widgets.php?cat=$1&page=$2 [L]
امیدواریم که این مطلب مورد توجه شما قرار گرفته و از این آموزش در وب سایت خود به نحو احسن استفاده کنید.
در این مطلب قصد داریم که به شما توضیح دهیم چگونه می توانید با ستفاده از ماژول mod_rewrite در وب سرور Apache به حل مشکلات سئو بپردازید، مشکلاتی که خیلی از وبمسترها با آن مواجهه پیدا می کنند. ماژول mod_rewrite ماژولیست که ابزار قدرتمندی برای تصحیح یو آر ال ها در اختیار شما می گذارد.
ماژول mod_rewrite چیست؟
ماژول mod_rewrite ماژولیست که در اغلب سرور های لینوکسی به صورت پیشفرض نصب شده است. تنها کافیست که از پشتیبان سرور خود بخواهید که آن را برای شما در صورت غیر فعال بودن، فعال کند.
ماژول mod_rewrite یو آر ال هایی که توسط مرورگر درخواست می شود را مدیریت کرده و محتوای مورد نظر را به مرورگر تحویل می دهد. این فرایند به کلی در سمت سرور انجام شده و مرورگر از جزییات آن اطلاعی پیدا نمی کند. نوع عملکرد این ماژول با ریدایرکت کاملا متفاوت است. در ریدایرکت صرفا مرورگر به مکان متفاوتی از سرور منتقل می شود.
ماژول mod_rewrite موجب مخفی شدن نحوه و منبع ارائه محتوا شده و به همین علت در افزایش امنیت سایت بسیار موثر است. این ماژول موجب افزایش راندمان وب سایت از دید موتورهای جستجو نیز می شود، چرا که یو آر ال ها را به صورت استاتیک به کاربران ارائه می دهد. ماژول mod_rewrite جنبه متغییر بودن یو آر ال ها را از بین برده و با استاتیک کردن آنها، موجب کاهش عدم سازگاری و افزایش دیده شدن وب سایت می گردد.
چگونه می توان از ماژول mod_rewrite برای ارتقا سئو استفاده کرد؟
ماژول mod_rewrite در جلوگیری از محتوای تکراری مورد استفاده قرار می گیرد و به علاوه می تواند یو آر ال ها نامعتبر و تغییر نام داده شده را به آدرس های صحیح ریدایرکت کند. هم چنین ایجاد یو آر ال های مورد پسند موتورهای جستجو از دیگر کارکرد های این ماژول است. ماژول mod_rewrite می تواند در صورت استفاده صحیح، موجب افزایش پیج رنک و رتبه سایت در موتورهای جستجو شده و بدین واسطه بازدید کنندگان بیشتری برای سایتتان ایجاد نماید.
قبل از استفاده از این ماژول می بایست فایل متنی با نام .htaccess در مسیر روت سایت ایجاد کنید. در صورتی که از سیستم عامل ویندوز استفاده می کنید، فایلی با نام htaccess.txt در سیستم خود ایجاد کرده و پس از انتقال آن به هاست خود، آن را به .htaccess تغییر نام دهید.
اگر نمی دانید که mod_rewrite در وب سایت شما فعال است، کافیست فایل .htaccess را ویرایش کرده و کدهای زیر را در آن قرار دهید:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^mod_rewrite\.html$ / [L]
در صورت فعال بودن و رفتن به آدرس Example Domain (http://www.example.com/mod_rewrite.html) مشاهده می کنید که پیغامی مبتنی بر فعال بودن آن مشاهده خواهید کرد. در هر حال می توانید طی یک تیکت از پشتیبانان هاست این موضوع را جویا شوید.
در ادامه به مثال هایی خواهیم پرداخت که با استفاده از ماژول mod_rewrite قابل پیاده سازی بوده و تاثیر زیادی بر روی سئو خواهند گذاشت.
1. جلوگیری از محتوای تکراری با mod_rewrite
با استفاده از mod_rewrite می توانید حالت های مختلف نام دامنه و آدرس یو آر ال ها را به یک شکل واحد تبدیل کنید. به عنوان مثال صفحه اصلی یک سایت می تواند دارای آدرس هایی به شکل زیر باشد:
Example Domain (http://www.example.com/)
Example Domain (http://example.com/)
Example Domain (http://www.example.com/index.html)
با این حال از نظر فنی تمام یو آر ال های بالا متفاوت از یکدیگر هستند و وب سرور می تواند محتوای کاملا متفاوتی به ازای هر یو آر ال نمایش دهد. اما در اغلب مواقع وب سرور ها محتوای یکسانی را به ازای هر یک از این یو آر ال ها نمایش می دهند و این مسئله موجب ایجاد مشکل محتوای تکراری می شود. شما می توانید با ریدایرکت نسخه بدون www و نسخه دارای index.html به نسخه با www این مشکل را حل کنید.
کد زیر نسخه بدون www را به نسخه با www ریدایرکت می کند:
RewriteEngine On
# Redirect non-www and IP addresses to www.
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
کد زیر نیز نسخه دارای index.html به نسخه بدون این عبارات ریدایرکت می شود:
# Redirect direct client requests for "<anything>/index.html" to "<anything>/"
RewriteRule ^(([^/]+/)*)index\.html http://www.example.com/$1 [R=301,L]
2. ریدایرکت یو آر ال های جا به جا شده با mod_rewrite
در بعضی مواقع پیش می آید که شما می خواهید آدرس های تعدادی از محتواهای سایت را تغییر داده و در عین حال نمی خواهید که پیج رنک سایت و رتبه آن صفحات از بین برود. همچنین نمی خواهید که کاربر با رفتن به آدرس قبلی با خطای 404 مواجه شود. تنها راه برای حفظ پیج رنک و حفظ کاربران سایت ریدایرکت یو آر ال های قدیمی به یو آر ال های جدید است:
RewriteEngine On
# Redirect relocated urls to the new direction
RewriteRule ^oldpage\.html$ Example Domain (http://www.example.com/newpage.html) [R=301,L]
RewriteRule ^directory/oldpage\.html$ http://www.example.com/directory/newpage.html [R=301,L]
زمانی که میخواهید یک پوشه را به پوشه جدید نقل مکان دهید، کد زیر کارساز خواهد بود:
# Redirect relocated directories to the new directories
RewriteRule ^olddir/(.*) http://www.example.com/newdir/$1 [R=301,L]
3. ریدایرکت آدرس های نامعتبر با استفاده از mod_rewrite
ریدایرکت صفحات نامعتبر به صفحات موجب سایت موجب حفظ پیج رنک و عدم مشاهده خطای 404 در سایت گردد. مجموعه کدهای زیر بسیاری از غلط های رایج املایی را تصحیح می کند:
RewriteEngine On
#+---------------------------------
#+ - BEGIN: URL fixup redirect routine
#+---------------------------------
# Get the requested URI, query string and hostname.
RewriteCond %{REQUEST_URI} ^(/[^?]*)([?].*)?$
RewriteRule . - [E=myUri:%1,E=myQuery:%2]
# Replace hmtl, htlm, and thml file extensions with html extension.
RewriteCond %{ENV:myUri} ^(.*)[.,](hmtl|htlm|thml)$ [NC]
RewriteRule . - [E=myRedirect:yes,E=myUri:%1.html]
# Replace comma(s) or multiple filetype delimiter periods in the url
# with a single period.
RewriteCond %{ENV:myUri} ^(.*)([,.]{2,}|,)((s?html?|php[1-9]?|aspx?|pdf|xls).*)$ [NC]
RewriteRule . - [E=myRedirect:yes,E=myUri:%1.%3]
# Remove invalid trailing characters
RewriteCond %{ENV:myUri} ^([/0-9a-z._\-]*)[^/0-9a-z._\-] [NC]
RewriteRule . - [E=myRedirect:yes,E=myUri:%1]
# Remove trailing punctutation
RewriteCond %{ENV:myUri} ^(.*)[._\-]+$
RewriteRule . - [E=myRedirect:yes,E=myUri:%1]
# Do the external 301 redirect only if needed and the resource exists
# at the corrected URI.
RewriteCond %{ENV:myRedirect} ^yes$ [NC]
RewriteCond %{DOCUMENT_ROOT}%{ENV:myUri} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{ENV:myUri} -d
RewriteRule . http://www.example.com%{ENV:myUri}%{ENV:myQuery} [R=301,L]
#+---------------------------------
#+ - END: URL fixup redirect routine
#+---------------------------------
4. یو آر ال های مورد پسند موتورهای جستجو با mod_rewrite
موتورهای جستجو به قابل فهم بودن یو آر ال ها اهمیت زیادی می دهند و از این رو این مسئله در وب سایت امری ضروریست. دو یو آر ال زیر را در نظر بگیرید:
یو آر ال دارای استرینگ: http://www.example.com/widgets.php?cat=blue&page=1
یو آر ال پس از به کار بردن mod_rewrite: http://www.example.com/widgets.php?cat=blue&page=1
اغلب افراد یو آر ال دوم را ترجیح می دهند و موتورهای جستجو نیز علاقه بیشتری به این نوع یو آر ال ها دارند. با استفاده از کد زیر می توان برای این مثال به این مهم دست یافت:
RewriteEngine On
RewriteRule ^widgets/(.*)/page(.*)\.php /widgets.php?cat=$1&page=$2 [L]
امیدواریم که این مطلب مورد توجه شما قرار گرفته و از این آموزش در وب سایت خود به نحو احسن استفاده کنید.