تغییر مسیر یا ریدایرکت یک URL به یک URL متفاوت با استفاده از تگ meta refresh یا ریدایرکت های 301و 302 امکان پذیر است .

301, "Moved Permanently"—recommended for SEO302, "Found" or "Moved Temporarily"Meta Refresh

ریدایرکت یا تغییر مسیر چیست ؟

ریدایرکت یا تغییر مسیر راهی برای انتقال کاربران و موتورهای جستحو به یک URL متفاوت از آنچه که در اصل درخواست شده است می باشد

در زیر شرح برخی از انواع معمول مورد استفاده از تغییرمسیر (redirect) را بررسی می کنیم

301 Moved Permanently

ریدایرکت 301 تغییر مسیر دائمی محسوب می شود و بین 90 تا 99 درصد در قدرت رتبه بندی صفحه تاثیر گذار است ریدایرکت 301 از وضعیت HTTP برای این نوع از تغییر مسیر استفاده می نماید در اغلب موارد، تغییر مسیر 301 بهترین روش برای پیاده سازی تغییرمسیر در یک وب سایت است.

302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)

ریدایرکت 302 یا تغییر مسیر موقت یک تغییر مسیر موقت می باشد . درصد رتبه بندی صفحات در این مورد 0 می باشد و بهتر است از این نوع تغییر مسیر استفاده نشود . اینترنت بر روی پروتوکلی به نام پروتکل انتقال ابرمتن (HTTP) در حال اجرا می باشد که به URL ها دیکته می کند چگونه کار کنند . که داری دو نسخه اصلی 1.0 و 1.1 می باشد . ریدایرکت 302 مراجعه کننده را به وضعیت Moved Temporarily هدایت می کند و این در نسخه 1.1 به معنی Found تغییر کرد

307 Moved Temporarily (HTTP 1.1 Only)

ریدایرکت 307 ورژن (HTTP 1.1) جایگزین تغییر مسیر 302 است . در حالی که خزنده های موتورهای جستجو در بیشتر مواقع همانند ریدایرکت 302 با آن برخورد می کنند ، برای ما بهتر است در اکثر موارد از ریدایرکت 301 استفاده نمائیم . تنها استثنا زمانی است که سرور را به طور کامل انتقال می دهیم و سرور قبلی هنوز پابرجا می باشد ، همچنین موتورهای جستجو در حال حاضر با ورژن 1.1 سازگار می باشند .از آنجا که در اصل غیر ممکن است برای تعیین اینکه آیا موتورهای جستجو یک صفحه را به عنوان سازگار شناسایی کرده اند ، به طور کلی بهتر است از تغییر مسیر 302 برای محتوایی که به طور موقت انتقال داده می شوند استفاده نمود.

Meta Refresh

تگ (Meta refresh) نوعی از تغییر مسیر در سطح صفحه به جای سرور می باشد . این نوع تگ ها به مراتب آهسته تر از تکنیک های ریدایرکت بر روی سرور عمل می کنند و برای بهینه سازی توصیه نمی شوند . این تگ با استفاده از یک ارزش که معمولا بر روی 5 قرار می گیرد به طور مثال " اگر شما در پنج ثانیه منتقل نشدید اینجا را کلیک کنید" به عنوان یک تاکتیک در بهینه سازی وب سایت بسیار ضعیف عمل می کند ، و در برخی موارد باعث از دست دادن لینک می شود .

ریدایرکت بهینه برای موتورهای جستجو

ریدایرکت یک روش معمول برای تغییر مسیر یک URL به دیگری است. هنگامی که این کار را انجام می دهیم ، بسیار مهم است که بهترین شیوه به منظور رعایت حفظ ارزش SEO انجام شود.

اولین مثال را با ذکر یک سناریو ساده مطرح می کنیم : یک نیاز به تغییر مسیر دائمی به یک آدرس دیگر دارد.

گزینه های متعددی برای انجام این کار وجود دارد اما به طور کلی تغییر مسیر 301 برای هر دو کاربران و موتورهای جستجو بهتر است. تعمیر و نگهداری 301 نشان می دهد به هر دو مرورگر و رباتهای موتور جستجو که صفحه به طور دائم نقل مکان کرد. تفسیر موتورهای جستجواز این نوع تغییر مسیر به این معنی است که نه تنها تا به صفحه تغییر مکان داده است بلکه محتوا و یا نسخه به روز شده آن را می توان در URL جدید یافت. موتورهای جستجو هیچ وزن لینک و مقدار محتوای صفحه اصلی به URL جدید برایشان مهم نیست.

آگاه باشید که هنگامی که در حال تغییر مسیر از یک صفحه از یک URL خود به دیگری می باشد موتورهای جستجو نیازمند زمان برای کشف 301 صفحه جدید با رتبه بندی و اعتماد از URL قبلی تشخیص آن و اعتبار بخشی دوباره می باشد. این فرایند می تواند مدت زمان طولانی را در پی داشته باشد .

گزینه های دیگر برای تغییر مسیر مانند 302 و تگ های متا جایگزین ضعیفی برای تغییر مسیر و رتبه بندی صفحات برای موتورهای جستجو می باشند. تنها زمانی این تغییرمسیر جایگزین خوبی است که یک وب مستر به طور هدفمند به تصویب یک لینک از صفحه قدیمی به جدید استفاده نماید.

انتقال محتوا کمی پیچیده تر از انتقال تمام یک سایت از یک دامنه به دامنه دیگر است. با توجه به سوء استفاده های اسپمینگ و سوء ظن توسط موتورهای جستجو تغییر مسیر 301 بین دامنه های مختلف نیاز به زمان بیشتری برای رسیدن به اعتبار دارد.

تغییر مسیر 301 در Apache

راه حل:

ساده ترین روش برای انجام این کار اضافه کردن تغییرمسیر 301 به کد PHP با استفاده از تابع هدر است با این حال این روزها توسعه دهندگان از اضافه کردن هر نوع اسکریپت اضافی به کدهای خود اجتناب می کنند و ترجیح می دهند با استفاده از ماژول mod_rewrite آپاچی و htaccess این کار را انجام دهند .

نحوه ایجاد تغییر مسیر301 با استفاده از زبان های برنامه نویسی مختلف :

ColdFusion Redirect
<.cfheader statuscode="301" statustext="Moved permanently">
<.cfheader name="Location" value="http://www.bestaweb.com"> 
PHP Redirect
<?
Header( "HTTP/1.1 301 Moved Permanently" ); 
Header( "Location: http://www. bestaweb.com" ); 
?> 
ASP Redirect
<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www. bestaweb.com/"
%> 
ASP .NET Redirect
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently"
Response.AddHeader("Location","http://www. bestaweb.com")
}
</script> 
JSP (Java) Redirect
<%
response.setStatus(301)
response.setHeader( "Location", "http://www. bestaweb.com/" )
response.setHeader( "Connection", "close" )
%> 
CGI PERL Redirect
$q = new CGI
print $q->redirect("http://www. bestaweb.com/"); 
Ruby on Rails Redirect
def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www. bestaweb.com/"
end 

نصب و راه اندازی:

به منظور انجام این کار یک وب سرور که ماژول mod_rewrite آپاچی بر روی آن نصب شده است نیازمندیم.اکثر سرورهایی که آپاچی بر روی آن نصب می باشد به طور پیش فرض mod_rewrite در آنها فعال است. بعد از بررسی فعال بودن mod_rewrite به فایل .htaccess مراجعه کرده و در صورت نبودن آن را در دایرکتوری اصلی هاست خود ایجاد کنید و خط زیر را برای فعال سازی در آن اضافه کنید

RewriteEngine On

ماژول mod_rewrite قابل تنظیم در هر سرور و یا در بستر هر دایرکتوری زمینه می باشد ، بستر هر سرور نیازمند ویرایش فایل پیکربندی آپاچی httpd.conf توسط توسعه دهنده دارد. هر دایرکتوری می تواند از فایل.htaccess در هر پوشه ای که کاربر می خواهد برای پیکربندی استفاده کند وجود داشته باشد. اگر httpd.conf برای وب مستر قابل دسترسی نیست، در این صورت مجبور به استفاده از . فایل htaccess. می باشد

عبارات منظم یا Regular Expressions با نام مستعار Regexes

برگرفته از wikipedia.org :

عبارت منظم یک رشته با توجه به قواعد نحوی خاص است، برای نمایش و یا موارد مشابه مجموعه ای از رشته ها. عبارات منظم (Regular expressions) قابل استفاده توسط بسیاری از ویرایشگرهای متن و ابزارهای کمکی است که برای جستجو و دستکاری در صفحات بر پایه متن بر اساس الگوهای خاص استفاده می شود.

Regular expressions یک مهارت ارزشمند برای هر دو برنامه نویسان و مدیران سیستم می باشد که باید آن را فرا بگیرند. برای تغییر مسیر URL ها با توجه به نمونه هایی که در این مقاله خواهید خواند، درک اصول اولیه استفاده از regexes مهم است. در زیر به لیستی از کاراکتر ها و اپراتورها که در regexes قابل استفاده اند شرح داده شده :

Period–matches anything
* Asterisk–matches zero or more of the preceding characters
+ Plus sign–matches one or more of the preceding character
( ) Parenthesis–enclosing a value in parenthesis will store what was matched in a variable to be used later; this is also referred to as a back-reference
(value1|value2)–enclosing two or more values in parenthesis and separating them with a pipe character is the equivalent of saying: “matching value1 OR value2”

تغییر مسیر یک فایل یا فولدردر یک دامنه یا از دامنه ای به دامنه دیگر

در زیر برای تغییر مسیر یک فایل از سرور اصلی را مشاهده می کنیم

مثال:

Redirect: http://www.bestaweb.com/folder/file.php To: /file.php

راه حل :

اضافه کردن دستور زیر به فایل های قابل اجرا بر روی سرور

RedirectMatch 301 / folder/(.*) /$1

عبارات با قاعده یا regular expression به آپاچی می گوید / folder/(.*) فولدر مورد نظر را با در نظر گرفتن 0 یا بیشتر و یا هر کاراکتری .* و رشته های داخل پرانتز بررسی کند و در انتهای URL به مرجع بازگشت که در اینجا با استفاده از 1$ نمایش داده ایم ذخیره نماید .

تغییر مسیر متعارف

در زیر می خواهیم هر درخواستی که برای ارجاع به وب سایت www.bestaweb.com که بدون www درخواست داده می شود را تغییر دهیم و به آنها www را اضافه نمائیم

Redirect: http://bestaweb.comTo: http://www.bestaweb.comRedirect: http://mail.bestaweb.comTo: http://www.bestaweb.comRedirect: http:// bestaweb.com /file.phpTo: http://www.bestaweb.com /file.php

راه حل :

RewriteCond %{HTTP_HOST} *!^www*.bestaweb\.com [NC]RewriteRule (.*) http://www.bestaweb.com/$1 [L,R=301]

توضیح :

این دستور به آپاچی می گوید میزبان بازدید کنندگان را بررسی و در صورتی که دسترسی آنها به صورت www.bestaweb.com نمی باشد آنها را تغییر مسیر داده و به www.bestaweb.com هدایت کند . علامت (!) قبل از نام وب سایت علامت نفی مقایسه می باشد (به معنی اگر نیست) ، پس عملیات بازنویسی را انجام می دهد و به صورت www.bestaweb.com تغییر مسیر پیدا می کند

تغییر مسیر بدون حفظ نام فایل

فایل هایی در سرور قبلی موجود بوده که بعد از انتقال به سرور جدید قابل دسترس نمی باشد و با خطای 404 مواجه می شود که نیازمند تغییر مسیر از سرویس قدیمی به دامنه جدید می باشد

Redirect: http://www.bestaweb.com/folder/file.phpTo: http://www.bestaweb.net/

راه حل :

RedirectMatch 301 /folder/file.php http://www.bestaweb.net

توضیح :

تمام درخواست ها برای /folder/file.php باید به ریشه دامنه http://www.bestaweb.net انتقال پیدا کند

تغییر مسیر رشته در متود GET

برخی از اسکریپت های PHP نام های مختلف داشته اما رشته GET ثابت مانده است. در اینجا به تغییر مسیر بازدید کنندگان به اسکریپت PHP با تغییر نوع رشته ها می پردازیم. رشته GET مجموعه ای از کاراکترهایی می باشد که پس از نام فایل در URL آمده و مورد استفاده برای انتقال داده ها به یک صفحه وب است. نمونه ای از یک رشته GET در URL می باشد که در مثال می بینیم :

URL/index.php?this=string

مثال :

Redirect: http://www.bestaweb.com/file/detail.php?CAT_ID=1234567To: http://www.bestaweb.net/art.php?CAT_ID=1234567

راه حل :

RedirectMatch 301 / file/detail.php (.*) http://www. bestaweb.net/art.php $1

توضیح :

یکبار دیگر regular expression با استفاده از (.*) برای مطابقت صفر یا بیشتر هر کاراکتر را ذخیره و به مرجع بازگشت 1$ ارسال نماید از آنجا که 1$ بعد از مسیر file/detail.php و در انتهای مسیر جدید قرار دارد لینک جدید با رشته های جدید تغییر مسیر پیدا می کند

تغییر مسیر یا ریدایرکت با استفاده از تغییر پسوند فایل ها

در نظر می گیریم در دامنه قدیمی پوشه ای به همراه فایل های HTML و PHP به صورت مخلوط وجود دارد . و در سرور جدید نیازمند تغییر تمام فایل ها به پسوند PHP می باشیم .

Redirect: http://www.bestawb.com/file/folder/anyfile.htmlTo: http://www.bestawb.net/articles/anyfile.phpRedirect: http://www.bestawb.com/file/folder/anyfile.phpTo: http://www.bestaweb.net/articles/anyfile2.php

راه حل :

RedirectMatch 301 /file/folder/(.*)\.(php|html) http://www.bestaweb.net/articles/$1.php

توضیح :

(*.) مطابقت با صفر یا بیشتر ، هر کارکتری ، و ذخیره به عنوان مرجع بازگشت به 1$ و همچنین \.(php|html) به آپاجی می گوید در صورت مطابقت هر کدام HTML یا PHP آنها را در مرجع بازگشت 2$ دخیره نماید (گرچه در مثال ما استفاده نشده) توجه کنید که علامت \ بک اسلش در اینجا به آپاچی می گوید که نیازی به تفسیر هر کاراکتری نمی باشد . قرار دادن HTML و PHP در پرانتز و جدا کردن آنها با استفاده از | بدین معنی است که فقط مقادیر مورد نظر مورد بررسی قرار بگیرد هر کدام از ارزش های داخل پرانتز . پس اگر بنویسیم (php|html|css|js|jpg|gif) رگولار اکسپرشن یا regex قادر به بررسی پسوندهای ذکر شده داخل پرانتز می باشد .

در نتیجه با استفاده از قدرت mod_rewrite و کمی سحر و جادوی عبارت منظم (Regular Expressions) توسعه دهندگان می توانند مجموعه ای از قوانین ساده برای هدایت صفحات وب. با استفاده از تغییرمسیر 301، برای از دست نرفتن رتبه بندی خود در موتورهای جستجو استفاده نمایند

گروه طراحی سایت بستا مفتخر است شما را در طراحی سایت به صورت استاندارد در تمامی مراحل از پیاده سازی تا اجرا همراهی نماید