We are aware of a potentially service impacting issue. Learn more

آموزش ریدایرکت آدرس های url سایت از طریق فایل htaccess. در هاست Print


به طور پیش فرض وب سایت شما با هر دو آدرس www.example.com و example.com در دسترس می باشد. از آنجا که گوگل محتوای کپی را جریمه می کند ، شما باید دسترسی به سایت خود را از یکی از دو آدرس فوق محدود کنید. البته ممکن است موتور های جستجو سایت شما را در هر دو آدرس ایندکس کرده باشند ولی بهتر است از هم اکنون اقدام کنید و سایت خود را از طریق فایل های داخل هاست تنظیم نمایید تا فقط از طریق www یا بدون www در دسترس باشد. فایل اصلی .htaccess شما در پوشه ی Public_Html در بخش File Manager هاست قرار دارد.

ریدایرکت به example.com یا از www.example.com:

بخش اول : چطور می توانم تمامی لینک های سایت را از www.example.com به example.com ریدایرکت کنم؟

ایجاد ریدایرکت 301 دائمی برای تمامی درخواست های http به منظور استفاده از هر دو آدرس www.example.com یا example.com:

مثال 1: ریدایرکت com به www.example.com:

1

2

3

RewriteEngine On

        RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]

        RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

مثال 2: ریدایرکت example.com به example.com:

1

2

3

RewriteEngine on

        RewriteCond %{HTTP_HOST} ^www\.example\.com$

        RewriteRule ^/?$ "http\:\/\/example\.com\/" [R=301,L]

 توضیح .htaccess 301 redirect :

نگاهی به مثال 1 می اندازیم، انتقال example.com به www.example.com . خط اول به apache فرمان می دهد ماژول rewrite را Start کند. خط بعدی :

1

RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]

مشخص می کند که قانون بعدی تنها در صورتی اجرا شود که http host (بدین معنی که url دامنه های درخواستی مشخص شده با علامت !) به صورت www.example.com نباشد.

علامت $بدین معنی می باشد که host با www.example.com به پایان برسد. و نتیجه به این صورت خواهد بود که تمام صفحات از www.example.com با rewrite rule ادامه یابد . همراه با علامت ! در نتیجه هر هاستی که www.example.com نباشد به این دامنه ریدایرکت خواهد شد.

[NC] مشخص می کند که http host به حروف غیر حساس یا Case insensitive باشد. کاراکتر “.” در نظر گرفته نمی شود زیرا این کاراکتر ویژه به صورت معمول نقطه ، به معنی «کاراکتر ناشناخته» می باشد.

خط آخر نیز شرح عملیاتی می باشد که باید اجرا شود:

1

RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

قسمت ^(.*)$ ترفند شگفت انگیز کوچکی می باشد. می توانید معنی علامت “.” را به یاد آورید؟ اگر نه، این کاراکتر می توانید به معنی «هرکاراکتر دیگری ، نامشخص» باشد (ولی فقط 1 کاراکتر) . بنابر این (.*) به این معنی می باشد که شما می توانید تعداد زیادی از کاراکتر ها را داشته باشید ، نه فقط یکی، این چیزیه که ما نیاز داریم زیرا ^(.*)$ شامل url های درخواستی بدون دامین می باشد. بخش بعدی http://www.example.com/$1 هدف rewrite url را توصیف می کند. این آخرین استفاده ی ما از نام دامنه می باشد که S1 شامل محتوای (.*) می باشد. بخش بعدی نیز مهم می باشد، زیرا ریدایرکت 301 برای ما به طور خودکار می باشد: [L,R=301]

L بدین معنی می باشد که آخرین (Last) قانون (Rule) در این اجرا می باشد. بعد از این rewrite، وب سرور نتیجه را باز خواهد گرداند. R=301 بدین معنی می باشد که وب سرور انتقال دائمی 301 را به مرورگر درخواست دهنده یا موتور جستجوی درخواست دهنده باز می گرداند.

ریدایرکت به com/index.php:

شما وب سایتی با نام example.com دارید و می خواهید تمام آدرس های دریافتی تان را به example.com/ به طور مثال example.com/index.php ریدایرکت کنید.

1

2

3

RewriteEngine On

        RewriteCond %{HTTP_HOST} ^example.com$

        RewriteRule ^$ http://example.com/index.php [L,R=301]

توضیح .htaccess 301 redirect :

کد بالا چه گونه عمل می کند؟ نگاهی به مثال 1 می اندازیم، انتقال example.com به www.example.com . خط اول به apache فرمان می دهد ماژول rewrite را Start کند. خط بعدی :

1

RewriteCond %{HTTP_HOST} !www.example.com$

مشخص می کند که قانون بعدی تنها در صورتی اجرا شود که http host (بدین معنی که url دامنه های درخواستی مشخص شده با علامت !) به صورت www.example.com نباشد.

علامت $بدین معنی می باشد که host با www.example.com به پایان برسد. و نتیجه به این صورت خواهد بود که تمام صفحات از example.com با rewrite rule ادامه یابد . همراه با علامت ! در نتیجه هر هاستی که www.example.com نباشد به این دامنه ریدایرکت خواهد شد.

[NC] مشخص می کند که http host به حروف غیر حساس یا Case insensitive باشد. کاراکتر “.” در نظر گرفته نمی شود زیرا این کاراکتر ویژه به صورت معمول نقطه ، به معنی «کاراکتر ناشناخته» می باشد.

خط آخر نیز شرح عملیاتی می باشد که باید اجرا شود:

1

RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301].

قسمت ^(.*)$ ترفند شگفت انگیز کوچکی می باشد. می توانید معنی علامت “.” را به یاد آورید؟ اگر نه، این کاراکتر می توانید به معنی «هرکاراکتر دیگری ، نامشخص» باشد (ولی فقط 1 کاراکتر) . بنابر این (.*) به این معنی می باشد که شما می توانید تعداد زیادی از کاراکتر ها را داشته باشید ، نه فقط یکی، این چیزیه که ما نیاز داریم زیرا ^(.*)$ شامل url های درخواستی بدون دامین می باشد.

بخش بعدی http://www.example.com/$1 [L,R=301] هدف rewrite url را توصیف می کند. این آخرین استفاده ی ما از نام دامنه می باشد که S1 شامل محتوای (.*) می باشد.

 


Was this answer helpful?

  • 0
« Back