ریدایرکت ( انتقال ) از www به بدون www و برعکس در apache , nginx , iis

msm

عضو حرفه ای
ناظر انجمن
عضویت
13/5/15
ارسال ها
185
امتیاز
6
سلام
در مبحث سئو تک آدرسی بودن سایت موضوع بسیار با اهمیتی هست که شاید کاربرانی که تازه ارد حوضه سایتداری شدند خیلی توجه نکنند یا ازش بی اطلاع باشند شاید شما فکر میکنید وقتی سایت شما یک دامنه داره پس تک آدرسی اما خیر اینطور نیست از نظر گوگل و موتوهای جستجو سایت شما همرا با www و سایت شما بدون www دو آدرس مختلف هستند همینطور در مورد http و https هم صدق میکنه
یعنی اگر شما سایتی دارید که هم با www و هم بدون www باز میشه از دید موتورهای جستجو دو وبسایت مختلف با محتویات یکسان دارید !
فک میکنم جمله بالا کاملا مشخص میکنه که چقد راین موضوع مهمه دو سایت با محتویات یکسان یعنی سمی کشنده برای سایت شما .
حالا برای اینکه این موضوع رفع بشه راه حل خیلی ساده ای وجود داره که در زیر برای وب سرو های مختلف راه حل رو بهتون ارائه میدم

نکته : نوع کنترل پنل شما هیچ تاثیری روی این کدها نداره و تنها نوع وب سرور مهم هست
نکته * : نوع cms شما تاثیری نداره و میتونید در هر cms از این کدها استفاده کنید
نکته**: برای این کار در سیستم هایی مثل وردپرس و جوملا و ... شاید پلاگینهایی وجود داشته باشه که پیشنهاد میکنم همرو حذف کنید و از همین کدها استفاده کنید .

انتقال از www به بدون www
برای آپاچی (apache)

در مسیر اصلی سایتتون که معمولا در دایرکتوری public_html قرار دارد یک فایل با نام .htaccess ایجاد یا اگر موجود دارید اقدام به ویرایش کنید و کد زیر را در آن قرار دهید .
کد:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

برای nginx

فایل کانفیگ مربوط به سایت مورد نظر رو از روی سرور باز کنید و در بخش server به شکل زیر این کد رو قرار دهید
کد:
server {
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}
بجای example.com آدرس سایت خودتونرو قرار بدید
اگر میخواید روی سرور شما تمام سایت ها از این قانون طبعیت کنند فایل کانفیگ اصلی رو باز کنید و این کد رو در بخش مناسب قرار بدید
کد:
server {
         server_name "~^www\.(.*)$" ;
         return 301 $scheme://$1$request_uri ;
}

برای iis
داخل روت سایتتون که معمولا در htdoc/www قرار دارد یک فایل با نام web.config ایجاد یا اگر موجو است اقدام به ویرایش کنید و کد زیر را در آن قرار دهید
کد:
<rewrite>
    <rules>
        <rule name="Redirect to non-www" stopProcessing="true">
            <match url="(.*)" negate="false"></match>
            <action type="Redirect" url="http://example.com/{R:1}"></action>
            <conditions>
                <add input="{HTTP_HOST}" pattern="^example\.com$" negate="true"></add>
            </conditions>
        </rule>
    </rules>
</rewrite>
اگر این فایل از قبل وجود داشت دنبال خط <rules> بگردید و کد رو از قسمت rulename تا </rule> مابینش قرار بدید تا کار کنه

خوب تا اینجا موفق شدیم در تمام وب سرور های پرکاربرد از آدرس سایتمون یک آدرس یکتا و بدون www بسازیم حالا وقتی کاربران سایت شما آدرس سایت رو فراخوانی کنند یا آدرس هر صفحه ای از سایت شمارو فراخوانی کنند به آدرس بدون www سایت شما منتقل میشن البته به همان آدرس صفحه .

در ادامه نحوه همین مورد رو برای انتقال به www در همین وب سرور ها قرار میدیم
 
بالا