{"id":21027,"date":"2024-05-20T18:53:34","date_gmt":"2024-05-20T16:53:34","guid":{"rendered":"https:\/\/dinorank.com\/blog\/?p=21027"},"modified":"2026-04-16T11:21:20","modified_gmt":"2026-04-16T09:21:20","slug":"migracion-seo","status":"publish","type":"post","link":"https:\/\/dinorank.com\/blog\/como-hacer-migracion-seo\/","title":{"rendered":"C\u00f3mo hacer una migraci\u00f3n SEO sin perder tr\u00e1fico. Incluye Checklist."},"content":{"rendered":"<p>Imagina que llevas trabajando el SEO de una web desde hace tiempo y que un d\u00eda decides hacer un redise\u00f1o para modernizar su imagen.<\/p>\n<p>La nueva web es preciosa. Mucho m\u00e1s vistosa e intuitiva que la anterior.<\/p>\n<p>Pero, de repente, empiezas a ver c\u00f3mo <strong>tu tr\u00e1fico empieza a caer<\/strong> de la noche a la ma\u00f1ana.<\/p>\n<p>\u00a1El trabajo de varios a\u00f1os echado a perder en unas pocas horas!<\/p>\n<p>Esta situaci\u00f3n, que te puede parecer exagerada, es m\u00e1s com\u00fan de lo que crees.<\/p>\n<p>Lo he visto cientos de veces. Clientes que han realizado cambios importantes en sus sitios web y comienzan a tener p\u00e9rdidas importantes en sus negocios por no tener en cuenta una serie de factores.<\/p>\n<p>Para evitar que esto te pase a ti, en este post te voy a proporcionar una lista de tareas para que puedas <strong>hacer la migraci\u00f3n de un sitio web sin que afecte al SEO<\/strong>.<\/p>\n<p>\u00a1Empezamos!<\/p>\n<h2>\u00bfQu\u00e9 es una migraci\u00f3n SEO y por qu\u00e9 debemos realizarla con cuidado?<\/h2>\n<p>Una migraci\u00f3n SEO es el proceso que seguimos para <strong>mantener todos los factores de posicionamiento web<\/strong> de un sitio tras haber realizado cambios sustanciales en el mismo.<\/p>\n<p>Un cambio de hosting, de dominio, de estructura o simplemente un redise\u00f1o de tu web son tareas delicadas que pueden afectar a su interpretaci\u00f3n por parte de los motores de b\u00fasquedas.<\/p>\n<p>Una migraci\u00f3n SEO bien hecha nos garantiza que las clasificaciones de nuestras p\u00e1ginas en Google y, en consecuencia, su visibilidad y el tr\u00e1fico que reciben, no sufrir\u00e1n ning\u00fan deterioro.<\/p>\n<p><span data-sheets-root=\"1\"><div id=\"brxe-vappve\" class=\"brxe-block p-2 gap-15\"><div id=\"brxe-nwuakt\" class=\"brxe-text-basic h2\">\u00bfTe dedicas al SEO o est\u00e1s pensando en ofrecerlo como servicio?\n<\/div><div id=\"brxe-aphiih\" class=\"brxe-text-basic\"><strong>Accede gratis a 2 clases del M\u00e1ster SEO de DinoRANK<\/strong> y lleva tu nivel un poquito m\u00e1s all\u00e1:<\/div><div id=\"brxe-ovsanc\" data-script-id=\"ovsanc\" class=\"brxe-code incontent-form-html\"><style>@import url(https:\/\/fonts.bunny.net\/css?family=ibm-plex-sans:400,700);<\/style>\n<style>\n#_form_307_{font-size:14px;line-height:1.6;font-family:arial, helvetica, sans-serif;margin:0}#_form_307_ *{outline:0}._form_hide{display:none;visibility:hidden}._form_show{display:block;visibility:visible}#_form_307_._form-top{top:0}#_form_307_._form-bottom{bottom:0}#_form_307_._form-left{left:0}#_form_307_._form-right{right:0}#_form_307_ input[type=\"text\"],#_form_307_ input[type=\"tel\"],#_form_307_ input[type=\"date\"],#_form_307_ textarea{padding:6px;height:auto;border:#979797 1px solid;border-radius:4px;color:#000 !important;font-size:14px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#_form_307_ textarea{resize:none}#_form_307_ ._submit{-webkit-appearance:none;cursor:pointer;font-family:arial, sans-serif;font-size:14px;text-align:center;background:#00C4A7 !important;border:0 !important;-moz-border-radius:5px !important;-webkit-border-radius:5px !important;border-radius:5px !important;color:#FFFFFF !important;padding:13px !important}#_form_307_ ._submit:disabled{cursor:not-allowed;opacity:0.4}#_form_307_ ._submit.processing{position:relative}#_form_307_ ._submit.processing::before{content:\"\";width:1em;height:1em;position:absolute;z-index:1;top:50%;left:50%;border:double 3px transparent;border-radius:50%;background-image:linear-gradient(#00C4A7, #00C4A7), conic-gradient(#00C4A7, #FFFFFF);background-origin:border-box;background-clip:content-box, border-box;animation:1200ms ease 0s infinite normal none running _spin}#_form_307_ ._submit.processing::after{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background:#00C4A7 !important;border:0 !important;-moz-border-radius:5px !important;-webkit-border-radius:5px !important;border-radius:5px !important;color:#FFFFFF !important;padding:13px !important}@keyframes _spin{0%{transform:translate(-50%, -50%) rotate(90deg)}100%{transform:translate(-50%, -50%) rotate(450deg)}}#_form_307_ ._close-icon{cursor:pointer;background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/esfkyjh1u_forms-close-dark.png\");background-repeat:no-repeat;background-size:14.2px 14.2px;position:absolute;display:block;top:11px;right:9px;overflow:hidden;width:16.2px;height:16.2px}#_form_307_ ._close-icon:before{position:relative}#_form_307_ ._form-body{margin-bottom:30px}#_form_307_ ._form-image-left{width:150px;float:left}#_form_307_ ._form-content-right{margin-left:164px}#_form_307_ ._form-branding{color:#fff;font-size:10px;clear:both;text-align:left;margin-top:30px;font-weight:100}#_form_307_ ._form-branding ._logo{display:block;width:130px;height:14px;margin-top:6px;background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/hh9ujqgv5_aclogo_li.png\");background-size:130px auto;background-repeat:no-repeat}#_form_307_ .form-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}#_form_307_ ._form-label,#_form_307_ ._form_element ._form-label{font-weight:bold;margin-bottom:5px;display:block}#_form_307_._dark ._form-branding{color:#333}#_form_307_._dark ._form-branding ._logo{background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/jftq2c8s_aclogo_dk.png\")}#_form_307_ ._form_element{position:relative;margin-bottom:10px;font-size:0;max-width:100%}#_form_307_ ._form_element *{font-size:14px}#_form_307_ ._form_element._clear{clear:both;width:100%;float:none}#_form_307_ ._form_element._clear:after{clear:left}#_form_307_ ._form_element input[type=\"text\"],#_form_307_ ._form_element input[type=\"date\"],#_form_307_ ._form_element select,#_form_307_ ._form_element textarea:not(.g-recaptcha-response){display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-family:inherit}#_form_307_ ._field-wrapper{position:relative}#_form_307_ ._inline-style{float:left}#_form_307_ ._inline-style input[type=\"text\"]{width:150px}#_form_307_ ._inline-style:not(._clear){margin-right:20px}#_form_307_ ._form_element img._form-image{max-width:100%}#_form_307_ ._form_element ._form-fieldset{border:0;padding:0.01em 0 0 0;margin:0;min-width:0}#_form_307_ ._clear-element{clear:left}#_form_307_ ._full_width{width:100%}#_form_307_ ._form_full_field{display:block;width:100%;margin-bottom:10px}#_form_307_ input[type=\"text\"]._has_error,#_form_307_ textarea._has_error{border:#F37C7B 1px solid}#_form_307_ input[type=\"checkbox\"]._has_error{outline:#F37C7B 1px solid}#_form_307_ ._show_be_error{float:left}#_form_307_ ._error{display:block;position:absolute;font-size:14px;z-index:10000001}#_form_307_ ._error._above{padding-bottom:4px;bottom:39px;right:0}#_form_307_ ._error._below{padding-top:8px;top:100%;right:0}#_form_307_ ._error._above ._error-arrow{bottom:-4px;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #FFDDDD}#_form_307_ ._error._below ._error-arrow{top:0;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #FFDDDD}#_form_307_ ._error-inner{padding:12px 12px 12px 36px;background-color:#FFDDDD;background-image:url(\"data:image\/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8ZM9 3V9H7V3H9ZM9 13V11H7V13H9Z' fill='%23CA0000'\/%3E%3C\/svg%3E\");background-repeat:no-repeat;background-position:12px center;font-size:14px;font-family:arial, sans-serif;font-weight:600;line-height:16px;color:#000;text-align:center;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;box-shadow:0 1px 4px rgba(31, 33, 41, 0.298295)}@media only screen and (max-width:319px){#_form_307_ ._error-inner{padding:7px 7px 7px 25px;font-size:12px;line-height:12px;background-position:4px center;max-width:100px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}#_form_307_ ._error-inner._form_error{margin-bottom:5px;text-align:left}#_form_307_ ._button-wrapper ._error-inner._form_error{position:static}#_form_307_ ._error-inner._no_arrow{margin-bottom:10px}#_form_307_ ._error-arrow{position:absolute;width:0;height:0}#_form_307_ ._error-html{margin-bottom:10px}.pika-single{z-index:10000001 !important}#_form_307_ input[type=\"text\"].datetime_date{width:69%;display:inline}#_form_307_ select.datetime_time{width:29%;display:inline;height:32px}#_form_307_ input[type=\"date\"].datetime_date{width:69%;display:inline-flex}#_form_307_ input[type=\"time\"].datetime_time{width:29%;display:inline-flex}@media (min-width:320px) and (max-width:667px){::-webkit-scrollbar{display:none}#_form_307_{margin:0;width:100%;min-width:100%;max-width:100%;box-sizing:border-box}#_form_307_ *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:1em}#_form_307_ ._form-content{margin:0;width:100%}#_form_307_ ._form-inner{display:block;min-width:100%}#_form_307_ ._form-title,#_form_307_ ._inline-style{margin-top:0;margin-right:0;margin-left:0}#_form_307_ ._form-title{font-size:1.2em}#_form_307_ ._form_element{margin:0 0 20px;padding:0;width:100%}#_form_307_ ._form-element,#_form_307_ ._inline-style,#_form_307_ input[type=\"text\"],#_form_307_ label,#_form_307_ p,#_form_307_ textarea:not(.g-recaptcha-response){float:none;display:block;width:100%}#_form_307_ ._row._checkbox-radio label{display:inline}#_form_307_ ._row,#_form_307_ p,#_form_307_ label{margin-bottom:0.7em;width:100%}#_form_307_ ._row input[type=\"checkbox\"],#_form_307_ ._row input[type=\"radio\"]{margin:0 !important;vertical-align:middle !important}#_form_307_ ._row input[type=\"checkbox\"]+span label{display:inline}#_form_307_ ._row span label{margin:0 !important;width:initial !important;vertical-align:middle !important}#_form_307_ ._form-image{max-width:100%;height:auto !important}#_form_307_ input[type=\"text\"]{padding-left:10px;padding-right:10px;font-size:16px;line-height:1.3em;-webkit-appearance:none}#_form_307_ input[type=\"radio\"],#_form_307_ input[type=\"checkbox\"]{display:inline-block;width:1.3em;height:1.3em;font-size:1em;margin:0 0.3em 0 0;vertical-align:baseline}#_form_307_ button[type=\"submit\"]{padding:20px;font-size:1.5em}#_form_307_ ._inline-style{margin:20px 0 0 !important}#_form_307_ ._inline-style input[type=\"text\"]{width:100%}}#_form_307_ .sms_consent_checkbox{position:relative;width:100%;display:flex;align-items:flex-start;padding:20px 0}#_form_307_ .sms_consent_checkbox input[type=\"checkbox\"]{float:left;margin:5px 10px 10px 0}#_form_307_ .sms_consent_checkbox .sms_consent_message{display:inline;float:left;text-align:left;margin-bottom:10px;font-size:14px;color:#7D8799}#_form_307_ .sms_consent_checkbox .sms_consent_message.sms_consent_mini{width:90%}#_form_307_ .sms_consent_checkbox ._error._above{right:auto;bottom:0}#_form_307_ .sms_consent_checkbox ._error._above ._error-arrow{right:auto;left:5px}@media (min-width:320px) and (max-width:667px){#_form_307_ .sms_consent_checkbox ._error._above{top:-30px;left:0;bottom:auto}}#_form_307_ .field-required{color:#FF0000}#_form_307_{position:relative;text-align:left;margin:25px auto 0;padding:20px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background:rgba(255, 255, 255, 0) !important;border-top:0px solid #737373 !important;border-right:0px solid #737373 !important;border-bottom:0px solid #737373 !important;border-left:0px solid #737373 !important;max-width:800px;-moz-border-radius:1px !important;-webkit-border-radius:1px !important;border-radius:1px !important;color:#000000}#_form_307_ ._show_be_error{min-width:100%}#_form_307_._inline-form,#_form_307_._inline-form ._form-content{font-family:IBM Plex Sans;font-size:14px;font-weight:400}#_form_307_._inline-form ._row span,#_form_307_._inline-form ._row label{font-family:IBM Plex Sans;font-size:14px;font-weight:400;line-height:1.6em;color:black !important}#_form_307__inlineform input[type=\"text\"],#_form_307__inlineform input[type=\"date\"],#_form_307__inlineform input[type=\"tel\"],#_form_307__inlineform select,#_form_307__inlineform textarea:not(.g-recaptcha-response){font-family:IBM Plex Sans;font-size:14px;font-weight:400;font-color:#000000;line-height:1.6em}#_form_307_._inline-form ._html-code *:not(h1, h2, h3, h4, h5, h6),#_form_307_._inline-form .sms_consent_message,#_form_307_._inline-form ._form-thank-you{font-family:IBM Plex Sans;font-size:14px;font-weight:400;color:black !important}#_form_307_._inline-form ._form-label,#_form_307_._inline-form ._form-emailidentifier,#_form_307_._inline-form ._form-checkbox-option-label{font-family:IBM Plex Sans;font-size:14px;font-weight:700;line-height:1.6em;color:black !important}#_form_307_._inline-form ._submit{margin-top:12px;font-family:IBM Plex Sans;font-size:14px;font-weight:400}#_form_307_._inline-form ._html-code h1,#_form_307_._inline-form ._html-code h2,#_form_307_._inline-form ._html-code h3,#_form_307_._inline-form ._html-code h4,#_form_307_._inline-form ._html-code h5,#_form_307_._inline-form ._html-code h6,#_form_307_._inline-form ._form-title{font-family:IBM Plex Sans;font-size:22px;line-height:normal;font-weight:700;color:black;margin-bottom:0;display:block}#_form_307_._inline-form ._form-branding{font-family:\"IBM Plex Sans\", Helvetica, sans-serif;font-size:13px;font-weight:100;font-style:normal;text-decoration:none}#_form_307_:before,#_form_307_:after{content:\" \";display:table}#_form_307_:after{clear:both}#_form_307_._inline-style{width:auto;display:inline-block}#_form_307_._inline-style input[type=\"text\"],#_form_307_._inline-style input[type=\"date\"]{padding:10px 12px}#_form_307_._inline-style button._inline-style{position:relative;top:27px}#_form_307_._inline-style p{margin:0}#_form_307_._inline-style ._button-wrapper{position:relative;margin:16px 12.5px 0 20px}#_form_307_ ._form-thank-you{position:relative;left:0;right:0;text-align:center;font-size:18px}#_form_307_ ._form-pc-confirmation ._submit{margin-top:16px}@media (min-width:320px) and (max-width:667px){#_form_307_._inline-form._inline-style ._inline-style._button-wrapper{margin-top:20px !important;margin-left:0 !important}}#_form_307_ .iti{width:100%}#_form_307_ .iti.iti--allow-dropdown.iti--separate-dial-code{width:100%}#_form_307_ .iti input{width:100%;border:#979797 1px solid;border-radius:4px}#_form_307_ .iti--separate-dial-code .iti__selected-flag{background-color:#FFFFFF;border-radius:4px}#_form_307_ .iti--separate-dial-code .iti__selected-flag:hover{background-color:rgba(0, 0, 0, 0.05)}#_form_307_ .iti__country-list{border-radius:4px;margin-top:4px;min-width:460px}#_form_307_ .iti__country-list--dropup{margin-bottom:4px}#_form_307_ .phone-error-hidden{display:none}#_form_307_ .phone-error{color:#E40E49}#_form_307_ .phone-input-error{border:1px solid #E40E49 !important}#_form_307_._inline-form ._form-content ._form-list-subscriptions-field fieldset{margin:0;margin-bottom:1.1428571429em;border:none;padding:0}#_form_307_._inline-form ._form-content ._form-list-subscriptions-field fieldset:last-child{margin-bottom:0}#_form_307_._inline-form ._form-content ._form-list-subscriptions-field legend{margin-bottom:1.1428571429em}#_form_307_._inline-form ._form-content ._form-list-subscriptions-field label{display:flex;align-items:flex-start;justify-content:flex-start;margin-bottom:0.8571428571em}#_form_307_._inline-form ._form-content ._form-list-subscriptions-field label:last-child{margin-bottom:0}#_form_307_._inline-form ._form-content ._form-list-subscriptions-field input{margin:0;margin-right:8px}#_form_307_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label{display:block;font-weight:400;margin-top:-4px}#_form_307_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label-with-description{display:block;font-weight:700;margin-top:-4px}#_form_307_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-description{margin:0;font-size:0.8571428571em}#_form_307_._inline-form ._form-content ._form-list-subscriptions-field ._form-subscriptions-unsubscribe-all-description{line-height:normal;margin-top:-2px}\n#_form_307_ ._submit{width:100%;font-family:\"Source Sans Pro\", Sans-serif !important;font-size:20px !important;font-weight:600 !important}#_form_307_ ._submit:hover{background-color:#04937E !important}#_form_307_ input#email{padding:12px;background-color:#ffffff}#_form_307_ ._row{margin-top:-5px;margin-bottom:-10px}#_form_307_._form{margin-top:-5px}#_form_307_ ._error._below{position:relative !important}#_form_307_ ._error._above{position:absolute !important}@media (min-width:320px) and (max-width:667px){#_form_307_ ._form_element{margin:0 0 0px}#_form_307_ ._row{margin-top:0px;margin-bottom:0px}#_form_307_ ._submit{margin-top:-10px}}<\/style>\n<form method=\"POST\" action=\"https:\/\/deandelafuenteromero.activehosted.com\/proc.php\" id=\"_form_307_\" class=\"_form _form_307 _inline-form  _dark\" novalidate data-styles-version=\"5\">\n  <input type=\"hidden\" name=\"u\" value=\"307\" \/>\n  <input type=\"hidden\" name=\"f\" value=\"307\" \/>\n  <input type=\"hidden\" name=\"s\" \/>\n  <input type=\"hidden\" name=\"c\" value=\"0\" \/>\n  <input type=\"hidden\" name=\"m\" value=\"0\" \/>\n  <input type=\"hidden\" name=\"act\" value=\"sub\" \/>\n  <input type=\"hidden\" name=\"v\" value=\"2\" \/>\n  <input type=\"hidden\" name=\"or\" value=\"2910697a81fdfefbca4abdcfbec4cfc9\" \/>\n  <div class=\"_form-content\">\n    <div class=\"_form_element _x74577619 _full_width \" >\n      <label for=\"email\" class=\"_form-label\">\n      <\/label>\n      <div class=\"_field-wrapper\">\n        <input type=\"text\" id=\"email\" name=\"email\" placeholder=\"Tu email...\" required\/>\n      <\/div>\n    <\/div>\n    <div class=\"_form_element _x87696446 _full_width \" >\n      <fieldset class=\"_form-fieldset\">\n        <div class=\"_row\">\n          <legend for=\"field[15][]\" class=\"_form-label\">\n          <\/legend>\n        <\/div>\n        <input data-autofill=\"false\" type=\"hidden\" id=\"field[15][]\" name=\"field[15][]\" value=\"~|\">\n        <div class=\"_row _checkbox-radio\">\n          <input id=\"field_15He le\u00eddo y acepto la pol\u00edtica de privacidad\" type=\"checkbox\" name=\"field[15][]\"\n          value=\"He le\u00eddo y acepto la pol\u00edtica de privacidad\"                                                                                 required                                >\n          <span>\n            <label for=\"field_15He le\u00eddo y acepto la pol\u00edtica de privacidad\">\n              He le\u00eddo y acepto la pol\u00edtica de privacidad<span class=\"field-required\">\n              *\n            <\/span>\n          <\/label>\n        <\/span>\n      <\/div>\n    <\/fieldset>\n  <\/div>\n  <div class=\"_form_element _x09639014 _full_width \" >\n    <input type=\"hidden\" name=\"field[121]\" value=\"\" \/>\n  <\/div>\n  <div class=\"_form_element _x64811239 _full_width \" >\n    <input type=\"hidden\" name=\"field[122]\" value=\"\" \/>\n  <\/div>\n  <div class=\"_form_element _x58860354 _full_width \" >\n    <input type=\"hidden\" name=\"field[123]\" value=\"\" \/>\n  <\/div>\n  <div class=\"_form_element _x23331849 _full_width \" >\n    <input type=\"hidden\" name=\"field[125]\" value=\"\" \/>\n  <\/div>\n  <div class=\"_form_element _x72046679 _full_width \" >\n    <input type=\"hidden\" name=\"field[126]\" value=\"\" \/>\n  <\/div>\n  <div class=\"_form_element _x41336277 _full_width \" >\n    <input type=\"hidden\" name=\"field[127]\" value=\"\" \/>\n  <\/div>\n  <div class=\"_button-wrapper _full_width\">\n    <button id=\"_form_307_submit\" class=\"_submit\" type=\"submit\">\n      \u00a1Me apunto!\n    <\/button>\n  <\/div>\n  <div class=\"_clear-element\">\n  <\/div>\n<\/div>\n<div class=\"_form-thank-you\" style=\"display:none;\">\n<\/div>\n<\/form><script>\nwindow.cfields = {\"15\":\"poltica_privacidad\",\"121\":\"utm_campaign\",\"122\":\"utm_source\",\"123\":\"utm_medium\",\"125\":\"utm_content\",\"126\":\"utm_adset\",\"127\":\"utm_ad\"};\nwindow._show_thank_you = function(id, message, trackcmp_url, email) {\n    var form = document.getElementById('_form_' + id + '_'), thank_you = form.querySelector('._form-thank-you');\n    form.querySelector('._form-content').style.display = 'none';\n    thank_you.innerHTML = message;\n    thank_you.style.display = 'block';\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\n    var visitorObject = window[vgoAlias];\n    if (email && typeof visitorObject !== 'undefined') {\n        visitorObject('setEmail', email);\n        visitorObject('update');\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\n        \/\/ Site tracking URL to use after inline form submission.\n        _load_script(trackcmp_url);\n    }\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\n};\nwindow._show_unsubscribe = function(id, message, trackcmp_url, email) {\n    var form = document.getElementById('_form_' + id + '_'), unsub = form.querySelector('._form-thank-you');\n    var branding = form.querySelector('._form-branding');\n    if (branding) {\n        branding.style.display = 'none';\n    }\n    form.querySelector('._form-content').style.display = 'none';\n    unsub.style.display = 'block';\n    form.insertAdjacentHTML('afterend', message)\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\n    var visitorObject = window[vgoAlias];\n    if (email && typeof visitorObject !== 'undefined') {\n        visitorObject('setEmail', email);\n        visitorObject('update');\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\n        \/\/ Site tracking URL to use after inline form submission.\n        _load_script(trackcmp_url);\n    }\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\n};\nwindow._show_error = function(id, message, html) {\n    var form = document.getElementById('_form_' + id + '_'),\n        err = document.createElement('div'),\n        button = form.querySelector('button[type=\"submit\"]'),\n        old_error = form.querySelector('._form_error');\n    if (old_error) old_error.parentNode.removeChild(old_error);\n    err.innerHTML = message;\n    err.className = '_error-inner _form_error _no_arrow';\n    var wrapper = document.createElement('div');\n    wrapper.className = '_form-inner _show_be_error';\n    wrapper.appendChild(err);\n    button.parentNode.insertBefore(wrapper, button);\n    var submitButton = form.querySelector('[id^=\"_form\"][id$=\"_submit\"]');\n    submitButton.disabled = false;\n    submitButton.classList.remove('processing');\n    if (html) {\n        var div = document.createElement('div');\n        div.className = '_error-html';\n        div.innerHTML = html;\n        err.appendChild(div);\n    }\n};\nwindow._show_pc_confirmation = function(id, header, detail, show, email) {\n    var form = document.getElementById('_form_' + id + '_'), pc_confirmation = form.querySelector('._form-pc-confirmation');\n    if (pc_confirmation.style.display === 'none') {\n        form.querySelector('._form-content').style.display = 'none';\n        pc_confirmation.innerHTML = \"<div class='_form-title'>\" + header + \"<\/div>\" + \"<p>\" + detail + \"<\/p>\" +\n        \"<button class='_submit' id='hideButton'>Administrar preferencias<\/button>\";\n        pc_confirmation.style.display = 'block';\n        var mp = document.querySelector('input[name=\"mp\"]');\n        mp.value = '0';\n    } else {\n        form.querySelector('._form-content').style.display = 'inline';\n        pc_confirmation.style.display = 'none';\n    }\n\n    var hideButton = document.getElementById('hideButton');\n    \/\/ Add event listener to the button\n    hideButton.addEventListener('click', function() {\n        var submitButton = document.querySelector('#_form_307_submit');\n        submitButton.disabled = false;\n        submitButton.classList.remove('processing');\n        var mp = document.querySelector('input[name=\"mp\"]');\n        mp.value = '1';\n        const cacheBuster = new URL(window.location.href);\n        cacheBuster.searchParams.set('v', new Date().getTime());\n        window.location.href = cacheBuster.toString();\n    });\n\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\n    var visitorObject = window[vgoAlias];\n    if (email && typeof visitorObject !== 'undefined') {\n        visitorObject('setEmail', email);\n        visitorObject('update');\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\n        \/\/ Site tracking URL to use after inline form submission.\n        _load_script(trackcmp_url);\n    }\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\n};\nwindow._load_script = function(url, callback, isSubmit) {\n    var head = document.querySelector('head'), script = document.createElement('script'), r = false;\n    var submitButton = document.querySelector('#_form_307_submit');\n    script.charset = 'utf-8';\n    script.src = url;\n    if (callback) {\n        script.onload = script.onreadystatechange = function() {\n            if (!r && (!this.readyState || this.readyState == 'complete')) {\n                r = true;\n                callback();\n            }\n        };\n    }\n    script.onerror = function() {\n        if (isSubmit) {\n            if (script.src.length > 10000) {\n                _show_error(\"307\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Acorta tus respuestas y vuelve a intentarlo.\");\n            } else {\n                _show_error(\"307\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Vuelve a intentarlo.\");\n            }\n            submitButton.disabled = false;\n            submitButton.classList.remove('processing');\n        }\n    }\n\n    head.appendChild(script);\n};\n(function() {\n    var iti;\n    if (window.location.search.search(\"excludeform\") !== -1) return false;\n    var getCookie = function(name) {\n        var match = document.cookie.match(new RegExp('(^|; )' + name + '=([^;]+)'));\n        return match ? match[2] : null;\n    }\n    var setCookie = function(name, value) {\n        var now = new Date();\n        var time = now.getTime();\n        var expireTime = time + 1000 * 60 * 60 * 24 * 365;\n        now.setTime(expireTime);\n        document.cookie = name + '=' + value + '; expires=' + now + ';path=\/; Secure; SameSite=Lax;';\n    }\n    var addEvent = function(element, event, func) {\n        if (element.addEventListener) {\n            element.addEventListener(event, func);\n        } else {\n            var oldFunc = element['on' + event];\n            element['on' + event] = function() {\n                oldFunc.apply(this, arguments);\n                func.apply(this, arguments);\n            };\n        }\n    }\n    var _removed = false;\n        var form_to_submit = document.getElementById('_form_307_');\n    var allInputs = form_to_submit.querySelectorAll('input, select, textarea'), tooltips = [], submitted = false;\n\n    var getUrlParam = function(name) {\n        if (name.toLowerCase() !== 'email') {\n            var params = new URLSearchParams(window.location.search);\n            return params.get(name) || false;\n        }\n        \/\/ email is a special case because a plus is valid in the email address\n        var qString = window.location.search;\n        if (!qString) {\n            return false;\n        }\n        var parameters = qString.substr(1).split('&');\n        for (var i = 0; i < parameters.length; i++) {\n            var parameter = parameters[i].split('=');\n            if (parameter[0].toLowerCase() === 'email') {\n                return parameter[1] === undefined ? true : decodeURIComponent(parameter[1]);\n            }\n        }\n        return false;\n    };\n\n    var acctDateFormat = \"%d\/%m\/%Y\";\n    var getNormalizedDate = function(date, acctFormat) {\n        var decodedDate = decodeURIComponent(date);\n        if (acctFormat && acctFormat.match(\/(%d|%e).*%m\/gi) !== null) {\n            return decodedDate.replace(\/(\\d{2}).*(\\d{2}).*(\\d{4})\/g, '$3-$2-$1');\n        } else if (Date.parse(decodedDate)) {\n            var dateObj = new Date(decodedDate);\n            var year = dateObj.getFullYear();\n            var month = dateObj.getMonth() + 1;\n            var day = dateObj.getDate();\n            return `${year}-${month < 10 ? `0${month}` : month}-${day < 10 ? `0${day}` : day}`;\n        }\n        return false;\n    };\n\n    var getNormalizedTime = function(time) {\n        var hour, minutes;\n        var decodedTime = decodeURIComponent(time);\n        var timeParts = Array.from(decodedTime.matchAll(\/(\\d{1,2}):(\\d{1,2})\\W*([AaPp][Mm])?\/gm))[0];\n        if (timeParts[3]) { \/\/ 12 hour format\n            var isPM = timeParts[3].toLowerCase() === 'pm';\n            if (isPM) {\n                hour = parseInt(timeParts[1]) === 12 ? '12' : `${parseInt(timeParts[1]) + 12}`;\n            } else {\n                hour = parseInt(timeParts[1]) === 12 ? '0' : timeParts[1];\n            }\n        } else { \/\/ 24 hour format\n            hour = timeParts[1];\n        }\n        var normalizedHour = parseInt(hour) < 10 ? `0${parseInt(hour)}` : hour;\n        var minutes = timeParts[2];\n        return `${normalizedHour}:${minutes}`;\n    };\n\n    for (var i = 0; i < allInputs.length; i++) {\n        var regexStr = \"field\\\\[(\\\\d+)\\\\]\";\n        var results = new RegExp(regexStr).exec(allInputs[i].name);\n        if (results != undefined) {\n            allInputs[i].dataset.name = allInputs[i].name.match(\/\\[time\\]$\/)\n                ? `${window.cfields[results[1]]}_time`\n                : window.cfields[results[1]];\n        } else {\n            allInputs[i].dataset.name = allInputs[i].name;\n        }\n        var fieldVal = getUrlParam(allInputs[i].dataset.name);\n\n        if (fieldVal) {\n            if (allInputs[i].dataset.autofill === \"false\") {\n                continue;\n            }\n            if (allInputs[i].type == \"radio\" || allInputs[i].type == \"checkbox\") {\n                if (allInputs[i].value == fieldVal) {\n                    allInputs[i].checked = true;\n                }\n            } else if (allInputs[i].type == \"date\") {\n                allInputs[i].value = getNormalizedDate(fieldVal, acctDateFormat);\n            } else if (allInputs[i].type == \"time\") {\n                allInputs[i].value = getNormalizedTime(fieldVal);\n            } else {\n                allInputs[i].value = fieldVal;\n            }\n        }\n    }\n\n    var remove_tooltips = function() {\n        for (var i = 0; i < tooltips.length; i++) {\n            tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);\n        }\n        tooltips = [];\n    };\n    var remove_tooltip = function(elem) {\n        for (var i = 0; i < tooltips.length; i++) {\n            if (tooltips[i].elem === elem) {\n                tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);\n                tooltips.splice(i, 1);\n                return;\n            }\n        }\n    };\n    var create_tooltip = function(elem, text) {\n        var tooltip = document.createElement('div'),\n            arrow = document.createElement('div'),\n            inner = document.createElement('div'), new_tooltip = {};\n        if (elem.type != 'radio' && (elem.type != 'checkbox' || elem.name === 'sms_consent')) {\n            tooltip.className = '_error';\n            arrow.className = '_error-arrow';\n            inner.className = '_error-inner';\n            inner.innerHTML = text;\n            tooltip.appendChild(arrow);\n            tooltip.appendChild(inner);\n            elem.parentNode.appendChild(tooltip);\n        } else {\n            tooltip.className = '_error-inner _no_arrow';\n            tooltip.innerHTML = text;\n            elem.parentNode.insertBefore(tooltip, elem);\n            new_tooltip.no_arrow = true;\n        }\n        new_tooltip.tip = tooltip;\n        new_tooltip.elem = elem;\n        tooltips.push(new_tooltip);\n        return new_tooltip;\n    };\n    var resize_tooltip = function(tooltip) {\n        var rect = tooltip.elem.getBoundingClientRect();\n        var doc = document.documentElement,\n            scrollPosition = rect.top - ((window.pageYOffset || doc.scrollTop)  - (doc.clientTop || 0));\n        if (scrollPosition < 40) {\n            tooltip.tip.className = tooltip.tip.className.replace(\/ ?(_above|_below) ?\/g, '') + ' _below';\n        } else {\n            tooltip.tip.className = tooltip.tip.className.replace(\/ ?(_above|_below) ?\/g, '') + ' _above';\n        }\n    };\n    var resize_tooltips = function() {\n        if (_removed) return;\n        for (var i = 0; i < tooltips.length; i++) {\n            if (!tooltips[i].no_arrow) resize_tooltip(tooltips[i]);\n        }\n    };\n    var validate_field = function(elem, remove) {\n        var tooltip = null, value = elem.value, no_error = true;\n        remove ? remove_tooltip(elem) : false;\n        if (elem.type != 'checkbox') elem.className = elem.className.replace(\/ ?_has_error ?\/g, '');\n        if (elem.getAttribute('required') !== null) {\n            if (elem.type == 'radio' || (elem.type == 'checkbox' && \/any\/.test(elem.className))) {\n                var elems = form_to_submit.elements[elem.name];\n                if (!(elems instanceof NodeList || elems instanceof HTMLCollection) || elems.length <= 1) {\n                    no_error = elem.checked;\n                }\n                else {\n                    no_error = false;\n                    for (var i = 0; i < elems.length; i++) {\n                        if (elems[i].checked) no_error = true;\n                    }\n                }\n                if (!no_error) {\n                    tooltip = create_tooltip(elem, \"Seleccione una opci\u00f3n.\");\n                }\n            } else if (elem.type =='checkbox') {\n                var elems = form_to_submit.elements[elem.name], found = false, err = [];\n                no_error = true;\n                for (var i = 0; i < elems.length; i++) {\n                    if (elems[i].getAttribute('required') === null) continue;\n                    if (!found && elems[i] !== elem) return true;\n                    found = true;\n                    elems[i].className = elems[i].className.replace(\/ ?_has_error ?\/g, '');\n                    if (!elems[i].checked) {\n                        no_error = false;\n                        elems[i].className = elems[i].className + ' _has_error';\n                        err.push(\"Es necesario verificar %s\".replace(\"%s\", elems[i].value));\n                    }\n                }\n                if (!no_error) {\n                    tooltip = create_tooltip(elem, err.join('<br\/>'));\n                }\n            } else if (elem.tagName == 'SELECT') {\n                var selected = true;\n                if (elem.multiple) {\n                    selected = false;\n                    for (var i = 0; i < elem.options.length; i++) {\n                        if (elem.options[i].selected) {\n                            selected = true;\n                            break;\n                        }\n                    }\n                } else {\n                    for (var i = 0; i < elem.options.length; i++) {\n                        if (elem.options[i].selected\n                            && (!elem.options[i].value\n                            || (elem.options[i].value.match(\/\\n\/g)))\n                        ) {\n                            selected = false;\n                        }\n                    }\n                }\n                if (!selected) {\n                    elem.className = elem.className + ' _has_error';\n                    no_error = false;\n                    tooltip = create_tooltip(elem, \"Seleccione una opci\u00f3n.\");\n                }\n            } else if (value === undefined || value === null || value === '') {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Este campo es obligatorio.\");\n            }\n        }\n        if (no_error && elem.name == 'email') {\n            if (!value.match(\/^[\\+_a-z0-9-'&=]+(\\.[\\+_a-z0-9-']+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})$\/i)) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Introduzca una direcci\u00f3n de correo electr\u00f3nico v\u00e1lida.\");\n            }\n        }\n        if (no_error && (elem.id == 'phone')) {\n            if (elem.value.trim() && typeof iti != 'undefined' && !iti.isValidNumber()) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Ingresa un n\u00famero de tel\u00e9fono v\u00e1lido.\");\n            }\n        }\n        if (no_error && \/date_field\/.test(elem.className)) {\n            if (!value.match(\/^\\d\\d\\d\\d-\\d\\d-\\d\\d$\/)) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Introduzca una fecha v\u00e1lida.\");\n            }\n        }\n\n        if (no_error && elem.name === 'sms_consent') {\n            const elemShouldBeChecked = (!!elem.attributes.required && !elem.checked);\n            if (elemShouldBeChecked) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Marca esta casilla para continuar\");\n            } else {\n                elem.className = elem.className.replace(\/ ?_has_error ?\/g, '');\n            }\n        }\n        tooltip ? resize_tooltip(tooltip) : false;\n        return no_error;\n    };\n    var needs_validate = function(el) {\n        if(el.getAttribute('required') !== null){\n            return true;\n        }\n        if((el.name === 'email' || el.id === 'phone') && el.value !== \"\"){\n            return true;\n        }\n\n        return false;\n    };\n    var validate_form = function(e) {\n        var err = form_to_submit.querySelector('._form_error'), no_error = true;\n        if (!submitted) {\n            submitted = true;\n            for (var i = 0, len = allInputs.length; i < len; i++) {\n                var input = allInputs[i];\n                if (needs_validate(input)) {\n                    if (input.type == 'text' || input.type == 'number' || input.type == 'time' || input.type == 'tel') {\n                        addEvent(input, 'blur', function() {\n                            this.value = this.value.trim();\n                            validate_field(this, true);\n                        });\n                        addEvent(input, 'input', function() {\n                            validate_field(this, true);\n                        });\n                    } else if (input.type == 'radio' || input.type == 'checkbox') {\n                        (function(el) {\n                            function getElementsArray(name){\n                                const value =  form_to_submit.elements[name];\n                                if (Array.isArray(value)){\n                                    return value;\n                                }\n                                return [value];\n                            }\n                            var radios = getElementsArray(el.name);\n                            for (var i = 0; i < radios.length; i++) {\n                                addEvent(radios[i], 'change', function() {\n                                    validate_field(el, true);\n                                });\n                            }\n                        })(input);\n                    } else if (input.tagName == 'SELECT') {\n                        addEvent(input, 'change', function() {\n                            validate_field(this, true);\n                        });\n                    } else if (input.type == 'textarea'){\n                        addEvent(input, 'input', function() {\n                            validate_field(this, true);\n                        });\n                    }\n                }\n            }\n        }\n        remove_tooltips();\n        for (var i = 0, len = allInputs.length; i < len; i++) {\n            var elem = allInputs[i];\n            if (needs_validate(elem)) {\n                if (elem.tagName.toLowerCase() !== \"select\") {\n                    elem.value = elem.value.trim();\n                }\n                validate_field(elem) ? true : no_error = false;\n            }\n        }\n        if (!no_error && e) {\n            e.preventDefault();\n        }\n        resize_tooltips();\n        return no_error;\n    };\n    addEvent(window, 'resize', resize_tooltips);\n    addEvent(window, 'scroll', resize_tooltips);\n\n    var _form_serialize = function(form){if(!form||form.nodeName!==\"FORM\"){return }var i,j,q=[];for(i=0;i<form.elements.length;i++){if(form.elements[i].name===\"\"){continue}switch(form.elements[i].nodeName){case\"INPUT\":switch(form.elements[i].type){case\"tel\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].previousSibling.querySelector('div.iti__selected-dial-code').innerText)+encodeURIComponent(\" \")+encodeURIComponent(form.elements[i].value));break;case\"text\":case\"number\":case\"date\":case\"time\":case\"hidden\":case\"password\":case\"button\":case\"reset\":case\"submit\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"checkbox\":case\"radio\":if(form.elements[i].checked){q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value))}break;case\"file\":break}break;case\"TEXTAREA\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"SELECT\":switch(form.elements[i].type){case\"select-one\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"select-multiple\":for(j=0;j<form.elements[i].options.length;j++){if(form.elements[i].options[j].selected){q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].options[j].value))}}break}break;case\"BUTTON\":switch(form.elements[i].type){case\"reset\":case\"submit\":case\"button\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break}break}}return q.join(\"&\")};\n\n    const formSupportsPost = false;\n    var form_submit = function(e) {\n\n        e.preventDefault();\n        if (validate_form()) {\n            if(form_to_submit.querySelector('input[name=\"phone\"]') && typeof iti != 'undefined') {\n                form_to_submit.querySelector('input[name=\"phone\"]').value = iti.getNumber();\n            }\n            \/\/ use this trick to get the submit button & disable it using plain javascript\n            var submitButton = e.target.querySelector('#_form_307_submit');\n            submitButton.disabled = true;\n            submitButton.classList.add('processing');\n                    var serialized = _form_serialize(document.getElementById('_form_307_')).replace(\/%0A\/g, '\\\\n');\n            var err = form_to_submit.querySelector('._form_error');\n            err ? err.parentNode.removeChild(err) : false;\n            async function submitForm() {\n                var formData = new FormData();\n                const searchParams = new URLSearchParams(serialized);\n                searchParams.forEach((value, key) => {\n                    if (key !== 'hideButton') {\n                        formData.append(key, value);\n                    }\n                });\n                let request = {\n                    headers: {\n                        \"Accept\": \"application\/json\"\n                    },\n                    body: formData,\n                    method: \"POST\"\n                };\n\n                let pageUrlParams = new URLSearchParams(window.location.search);\n                if (pageUrlParams.has('t')) {\n                    request.headers.Authorization = 'Bearer ' + pageUrlParams.get('t');\n                }\n                const response = await fetch('https:\/\/deandelafuenteromero.activehosted.com\/proc.php?jsonp=true', request);\n\n                return response.json();\n            }\n            if (formSupportsPost) {\n                submitForm().then((data) => {\n                    eval(data.js);\n                }).catch(() => {\n                    _show_error(\"307\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Vuelve a intentarlo.\");\n                });\n            } else {\n                _load_script('https:\/\/deandelafuenteromero.activehosted.com\/proc.php?' + serialized + '&jsonp=true', null, true);\n            }\n        }\n        return false;\n    };\n    addEvent(form_to_submit, 'submit', form_submit);\n})();\n\n<\/script><style>\/* Texto junto al checkbox: blanco y en l\u00ednea *\/\n._form_307 ._checkbox-radio label {\n  display: inline !important;\n  margin-left: 8px !important;\n}\n\n\/* Color blanco del texto \"Verifica que eres un humano\" *\/\n._form_307 label[for=\"ls\"],\n._form_307 ._form_element label._form-label {\n  color: #ffffff !important;\n  display: inline-block;\n  font-weight: 400 !important;\n  margin-left: 8px;\n}\n\n\/* Placeholder del campo de email *\/\n#_form_307_ #email::placeholder {\n  color: #002132 !important;\n}\n\n\/* Altura del campo de email reducida *\/\n#_form_307_ #email {\n  padding: 8px 12px !important;\n  height: 40px !important;\n  font-size: 14px !important;\n  line-height: 1.2 !important;\n  margin-bottom: 16px !important;\n}\n<\/style><\/div><\/div><\/span><\/p>\n<h2>Tipos de migraci\u00f3n SEO m\u00e1s frecuentes<\/h2>\n<p>Quiz\u00e1 te preguntes que, si es un proceso tan peligroso, \u00bfpor qu\u00e9 arriesgarse a realizar una migraci\u00f3n web?<\/p>\n<p>En realidad son varios los motivos que puedes tener para ello. Aqu\u00ed te enumero los m\u00e1s habituales:<\/p>\n<ul>\n<li><strong>Migraci\u00f3n por cambio de hosting.<\/strong> Es la m\u00e1s habitual, y generalmente la m\u00e1s sencilla, ya que la web no experimenta cambios sustanciales. Puede estar motivada por la contrataci\u00f3n de un servidor con mejores prestaciones o m\u00e1s econ\u00f3mico.<\/li>\n<li><strong>Migraci\u00f3n por cambio de dominio.<\/strong> Suele deberse a un cambio de marca, que exige modificar el nombre de la empresa o del proyecto.<\/li>\n<li><strong>Migraci\u00f3n por cambio de plataforma<\/strong>. Para aprovechar las funcionalidades espec\u00edficas de un nuevo CMS u otra tecnolog\u00eda. Por ejemplo, pasar de WordPress a <a href=\"https:\/\/dinorank.com\/blog\/seo-para-shopify\/\">Shopify<\/a>.<\/li>\n<li><strong>Migraci\u00f3n por cambio de estructura.<\/strong> Con el objetivo de mejorar la arquitectura web de nuestro sitio para hacerla m\u00e1s organizada y accesible.<\/li>\n<li><strong>Migraci\u00f3n por redise\u00f1o.<\/strong> Para mejorar la est\u00e9tica de la web o la experiencia de usuario.<\/li>\n<\/ul>\n<p>Cualquiera de estas operaciones hay que realizarlas con cautela, pero hay algunas que son m\u00e1s cr\u00edticas que otras en lo que a SEO se refiere.<\/p>\n<p>En concreto, deber\u00e1s<strong> prestar especial atenci\u00f3n a aquellas que impliquen un cambio en las URLs<\/strong>, como las migraciones de dominios o de la estructura web. Deber\u00e1s asegurarte de que Google trata adecuadamente estas nuevas URLs y les transfiere toda la autoridad que ya ten\u00edan las antiguas.<\/p>\n\t\t<div data-elementor-type=\"section\" data-elementor-id=\"30836\" class=\"elementor elementor-30836\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-19a0f8ad e-con-full e-flex e-con e-parent\" data-id=\"19a0f8ad\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4be7d8fe elementor-widget elementor-widget-image\" data-id=\"4be7d8fe\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/seowarriors.club\/\" target=\"_blank\" rel=\"nofollow noopener\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"768\" height=\"263\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/10\/Captura-de-pantalla-2025-10-10-162612-768x263.png\" class=\"attachment-medium_large size-medium_large wp-image-30778\" alt=\"\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/10\/Captura-de-pantalla-2025-10-10-162612-768x263.png 768w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/10\/Captura-de-pantalla-2025-10-10-162612-300x103.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/10\/Captura-de-pantalla-2025-10-10-162612-1024x351.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/10\/Captura-de-pantalla-2025-10-10-162612.png 1034w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<pre>\ud83d\udc49 Evita p\u00e9rdidas de tr\u00e1fico y errores cr\u00edticos aprendiendo <a href=\"https:\/\/seowarriors.club\/plataforma\/curso-de-migraciones\/\" target=\"_blank\" rel=\"noopener\">c\u00f3mo hacer bien una migraci\u00f3n SEO paso a paso<\/a>, con checklist incluida y enfoque pr\u00e1ctico para WordPress y proyectos web complejos.<\/pre>\n<h2>Paso a paso para realizar la migraci\u00f3n SEO de un sitio web sin complicaciones<\/h2>\n<p>Es el momento de ponernos manos a la obra y ver c\u00f3mo llevar a cabo una migraci\u00f3n SEO.<\/p>\n<p>Pero antes, d\u00e9jame aclararte algo.<\/p>\n<p><strong>Una migraci\u00f3n SEO no es un proceso complejo<\/strong>, pero s\u00ed muy detallista.<\/p>\n<p>Cada tarea debe ser ejecutada con total atenci\u00f3n, ya que <strong>un peque\u00f1o descuido puede tener implicaciones importantes<\/strong> en el posicionamiento web final.<\/p>\n<p>Por eso ver\u00e1s que <strong>haremos varias revisiones a lo largo del proceso<\/strong> que nos aseguren que todo funciona correctamente.<\/p>\n<p>Tambi\u00e9n tengo que decirte que en esta lista me voy a <strong>centrar exclusivamente en los aspectos relacionados con el SEO<\/strong>.<\/p>\n<p>Para la parte t\u00e9cnica de la migraci\u00f3n web (mover la web de servidor, cambiar el dominio, modificar el CMS, etc) deber\u00e1s consultar otras gu\u00edas espec\u00edficas o contar con la ayuda de un profesional que la lleve a cabo.<\/p>\n<p>Dicho esto, ahora s\u00ed, vamos con el listado de tareas que no debes pasar por alto a la hora de hacer una migraci\u00f3n SEO.<\/p>\n<h3>Preparaci\u00f3n de la migraci\u00f3n SEO<\/h3>\n<p>En una migraci\u00f3n web no hay lugar para la improvisaci\u00f3n. Debemos planificarla con antelaci\u00f3n y <strong>asegurarnos de que contamos con todos los elementos necesarios<\/strong> para realizarla convenientemente.<\/p>\n<p>A continuaci\u00f3n te explico todo lo que debes verificar antes de que llegue el momento de la migraci\u00f3n.<\/p>\n<h4>1. Elige un d\u00eda \u00f3ptimo para la migraci\u00f3n<\/h4>\n<p>Aunque pueda parecer obvio, el primer paso para preparar tu migraci\u00f3n web es elegir un d\u00eda para realizarla.<\/p>\n<p>Pero esta fecha no debe escogerse alegremente, sino que hay que <strong>procurar que impacte lo menos posible en los resultados<\/strong>.<\/p>\n<p><strong>Ten en cuenta la estacionalidad <\/strong>de tu sitio web y escoge un momento en el que sepas con certeza que tu tr\u00e1fico no va a ser elevado.<\/p>\n<p>Si tienes dudas, los informes de Google Analytics, Google Search Console e incluso Google Trends te pueden ayudar a identificar esos per\u00edodos en los que tu sitio web tiene menor demanda.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-21035 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-estacionalidad.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase pre-migraci\u00f3n. Fijar una fecha en funci\u00f3n de la estacionalidad de la web.\" width=\"1024\" height=\"416\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-estacionalidad.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-estacionalidad-300x122.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-estacionalidad-768x312.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Tambi\u00e9n es importante la hora. Tu web puede tener picos de visitas seg\u00fan la franja horaria, por lo que <strong>procura adaptarte a las costumbres de tus usuarios<\/strong>.<\/p>\n<p>Y no olvides que las cosas no tienen por qu\u00e9 salir bien a la primera.<\/p>\n<p>Ten presente que el proceso puede dilatarse por varias horas y <strong>reserva un tiempo prudencial<\/strong> con antelaci\u00f3n.<\/p>\n<h4>2. Revisa a fondo tu nuevo dominio<\/h4>\n<p>Si la migraci\u00f3n es a un nuevo dominio, haz una revisi\u00f3n de \u00e9ste para <strong>comprobar que no est\u00e1 penalizado<\/strong>.<\/p>\n<p>Seguramente es algo que ya habr\u00e1s hecho antes de decidirte a comprarlo, pero no est\u00e1 de m\u00e1s hacer alguna comprobaci\u00f3n extra.<\/p>\n<p>En la p\u00e1gina <a href=\"https:\/\/archive.org\/\" target=\"_blank\" rel=\"noopener\">Wayback Machine<\/a> puedes ver si el dominio ya ha tenido alg\u00fan contenido anteriormente o si es completamente nuevo.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-21043 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-wayback-machine.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase pre-migraci\u00f3n.Comprobaci\u00f3n del dominio en la web archive.org\" width=\"1024\" height=\"451\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-wayback-machine.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-wayback-machine-300x132.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-wayback-machine-768x338.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Si ves p\u00e1ginas de tem\u00e1tica dudosa, mejor no utilices ese dominio para tu proyecto.<\/p>\n<p>Por otro lado, si has comprado el dominio porque estaba expirado y quer\u00edas aprovechar su autoridad, es necesario que conozcas dos cosas:<\/p>\n<p>Por un lado, <strong>qu\u00e9 p\u00e1ginas contin\u00faan indexadas<\/strong>. Puedes averiguarlo tecleando el comando \u201csite:\u201d, seguido del nombre del dominio en Google.<\/p>\n<p>Por otro, los <strong>backlinks de calidad que pudiera tener<\/strong>. Puedes consultarlo a trav\u00e9s de herramientas como Ahrefs, Semrush o el propio DinoRANK.<\/p>\n<p>Ap\u00fantate toda esta informaci\u00f3n porque luego la vas a necesitar.<\/p>\n<h4>3. Lleva a cabo una auditor\u00eda SEO de tu antigua web<\/h4>\n<p>Si te has preocupado por el SEO de tu web, probablemente las auditor\u00edas sean una tarea que realices con frecuencia.<\/p>\n<p>Pues bien, cuando est\u00e1s planificando una migraci\u00f3n web, es imprescindible hacer una auditor\u00eda SEO del sitio para comprobar que todo est\u00e1 en orden.<\/p>\n<p>De este modo, realizar\u00e1s <strong>un rastreo de todas las URLs de tu web<\/strong> para verificar que todas ellas responden correctamente, que las redirecciones funcionan o que todo lo que debe ser indexado est\u00e1 marcado como tal.<\/p>\n<p>Si ves alg\u00fan error, es el momento de arreglarlo.<\/p>\n<p>Para hacer una auditor\u00eda SEO puedes utilizar muchas herramientas. Yo suelo utilizar <a href=\"https:\/\/dinorank.com\/blog\/tutorial-screaming-frog\/\">Screaming Frog<\/a>, ya que la manera en la que muestra y exporta la informaci\u00f3n me resulta muy pr\u00e1ctica para las tareas que van a venir a continuaci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21042 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-screaming-frog.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase pre-migraci\u00f3n. Auditor\u00eda web con Screaming Frog.\" width=\"1024\" height=\"700\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-screaming-frog.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-screaming-frog-300x205.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-screaming-frog-768x525.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h4>4. Revisa los enlaces internos<\/h4>\n<p>Una parte muy importante de la auditor\u00eda SEO anterior consiste en <strong>comprobar que no tienes enlaces rotos<\/strong>. El enlazado interno es fundamental para guiar a los robots de los buscadores y no podemos permitirnos errores 404 que entorpezcan su labor.<\/p>\n<p>Como puedes ver en la captura anterior de Screaming Frog, con esta herramienta puedes analizar f\u00e1cilmente los enlaces internos de cualquier URL y puedes filtrarlos en funci\u00f3n de su situaci\u00f3n en la p\u00e1gina (si est\u00e1n en el men\u00fa, en el cuerpo del texto, etc).<\/p>\n<p>Adem\u00e1s, tienes la posibilidad de <strong>exportar todos los enlaces internos de una web<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21034 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-enlaces-internos-exportacion-masiva.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase pre-migraci\u00f3n. Exportaci\u00f3n masiva de enlaces internos con Screaming Frog.\" width=\"1024\" height=\"200\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-enlaces-internos-exportacion-masiva.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-enlaces-internos-exportacion-masiva-300x59.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-enlaces-internos-exportacion-masiva-768x150.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Aprovecha esta exportaci\u00f3n masiva para guardarlos en un fichero Excel y utilizarlo para hacer comprobaciones m\u00e1s adelante.<\/p>\n\t\t<div data-elementor-type=\"page\" data-elementor-id=\"28113\" class=\"elementor elementor-28113\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9b6f910 e-flex e-con-boxed e-con e-parent\" data-id=\"9b6f910\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2c3fb05 elementor-widget elementor-widget-image\" data-id=\"2c3fb05\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/seowarriors.club\/curso-de-screaming-frog\/\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"3347\" height=\"1369\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/02\/Banners-para-curso-de-Screaming-Frog.png\" class=\"attachment-full size-full wp-image-28115\" alt=\"Curso de Screaming Frog\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/02\/Banners-para-curso-de-Screaming-Frog.png 3347w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/02\/Banners-para-curso-de-Screaming-Frog-300x123.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/02\/Banners-para-curso-de-Screaming-Frog-1024x419.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/02\/Banners-para-curso-de-Screaming-Frog-768x314.png 768w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/02\/Banners-para-curso-de-Screaming-Frog-1536x628.png 1536w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2025\/02\/Banners-para-curso-de-Screaming-Frog-2048x838.png 2048w\" sizes=\"(max-width: 3347px) 100vw, 3347px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<h4>5. Haz siempre una copia de seguridad<\/h4>\n<p>Cuando est\u00e9s planificando una migraci\u00f3n de tu sitio web, tener una copia de tus datos es <strong>vital para volver atr\u00e1s si algo falla<\/strong>.<\/p>\n<p>Para hacer esta copia de respaldo de tu web puedes utilizar diferentes utilidades dependiendo de la tecnolog\u00eda con la que est\u00e9 construido tu sitio.<\/p>\n<p>En concreto, si usas WordPress, un plugin que suele funcionar muy bien es \u201cAll-in-One WP Migration\u201d.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21032 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-copia-seguridad.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase pre-migraci\u00f3n. Plugin de copia de seguridad para WordPress.\" width=\"700\" height=\"350\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-copia-seguridad.png 700w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-copia-seguridad-300x150.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/p>\n<p>Tambi\u00e9n puedes hacer manualmente tu backup copiando todos los ficheros del servidor y exportando las bases de datos.<\/p>\n<p>Es m\u00e1s, <strong>la mayor\u00eda de servicios de hosting hacen copias de seguridad diarias<\/strong> que te pueden salvar de una cat\u00e1strofe.<\/p>\n<p>En definitiva, utiliza el m\u00e9todo que te resulte m\u00e1s c\u00f3modo pero ten una copia de seguridad a mano por lo que pueda pasar.<\/p>\n<h4>6. Elabora tu mapa de redirecciones SEO<\/h4>\n<p>El mapa de redirecciones 301 es una de las herramientas m\u00e1s importantes de una migraci\u00f3n SEO. <strong>Nos va a asegurar que todas nuestras URLs siguen siendo accesibles<\/strong> y no vamos a perder su posicionamiento.<\/p>\n<p>Esta tarea es<strong> imprescindible cuando hacemos modificaciones en nuestras URLs<\/strong>, bien por una migraci\u00f3n debida a un cambio de dominio o de estructura del sitio web.<\/p>\n<p>Para crearlo simplemente exportamos la lista de URLs que extraemos con herramientas como Screaming Frog y las copiamos a una columna de un fichero Excel. En la otra columna escribimos la URL destino a la que queremos redirigir cada una de ellas.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21038 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-mapa-redirecciones.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase pre-migraci\u00f3n. Mapa de redirecciones 301.\" width=\"1024\" height=\"382\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-mapa-redirecciones.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-mapa-redirecciones-300x112.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-mapa-redirecciones-768x287.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>\u00bfRecuerdas que antes hablamos sobre las p\u00e1ginas indexadas o que reciben enlaces en los dominios expirados?<\/p>\n<p>Es el momento de incluirlas tambi\u00e9n en esta tabla y decidir si queremos que las visitas se redirijan a otra URL de nuestra web para conservar su autoridad.<\/p>\n<h4>7. Revisa los enlaces externos<\/h4>\n<p>No podemos olvidarnos de los backlinks o <strong>enlaces externos que recibimos de otros sitios web<\/strong>.<\/p>\n<p>DinoRANK, por ejemplo, incluye un m\u00f3dulo de link building que nos permite conocer todos los enlaces que apuntan hacia nuestra web.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21033 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-enlaces-externos-dinorank.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase pre-migraci\u00f3n. An\u00e1lisis de enlaces externos con DinoRANK.\" width=\"1024\" height=\"572\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-enlaces-externos-dinorank.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-enlaces-externos-dinorank-300x168.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-enlaces-externos-dinorank-768x429.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Las p\u00e1ginas de destino de estos backlinks <strong>tienen una importancia especial para la autoridad de nuestro sitio<\/strong>. Si cambiamos su URL, el enlace externo podr\u00eda terminar en un error 404 y dejar de hacer su funci\u00f3n.<\/p>\n<p>Por eso, a la hora de planificar una migraci\u00f3n, comprueba que todas las URLs destino de un enlace externo est\u00e9n contempladas en el mapa de redirecciones. De esta manera te asegurar\u00e1s de mantener para tu dominio un enlace completamente funcional, que transmite autoridad y aporta tr\u00e1fico a la URL correcta.<\/p>\n<h4>8. Gestiona los errores 404<\/h4>\n<p>Aunque tratemos de evitarlos, siempre hay errores 404 que se nos pueden escapar.<\/p>\n<p>En este punto tienes que tener un plan definido para sortearlos.<\/p>\n<p>Una estrategia puede consistir en <strong>redirigir todos los errores hacia una p\u00e1gina concreta<\/strong> de nuestra web, por ejemplo la home. As\u00ed siempre habr\u00e1 una respuesta para que Google y el usuario puedan seguir navegando.<\/p>\n<p>Otra opci\u00f3n ser\u00eda <strong>crear una p\u00e1gina 404 personalizada<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21039 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-pagina-404-dinorank.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase pre-migraci\u00f3n. P\u00e1gina personalizada para errores 404 del blog de DinoRANK.\" width=\"1024\" height=\"567\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-pagina-404-dinorank.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-pagina-404-dinorank-300x166.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-pagina-404-dinorank-768x425.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>En esta p\u00e1gina, adem\u00e1s de advertir del problema, podemos colocar enlaces a sitios estrat\u00e9gicos de nuestra web para redirigir a los visitantes hacia las URLs que m\u00e1s nos interesen.<\/p>\n<h4>9. Utiliza un servidor de pruebas para el nuevo sitio web<\/h4>\n<p>Nunca hagas modificaciones importantes directamente sobre la versi\u00f3n p\u00fablica del sitio web.<\/p>\n<p>Antes de proceder a la migraci\u00f3n, deber\u00edais <strong>comprobar que todo funciona correctamente en un entorno controlado<\/strong>, creado espec\u00edficamente para este fin.<\/p>\n<p>Puedes montar un servidor de pre-producci\u00f3n en un dominio de pruebas o en un subdominio de tu web. El prop\u00f3sito es que no afecte a tu sitio principal.<\/p>\n<p>S\u00f3lo se me ocurre una situaci\u00f3n en la que podr\u00eda tener sentido trabajar en el servidor definitivo: cuando haces un cambio de dominio.<\/p>\n<p>En ese caso, puedes montar la nueva web en el servicio de alojamiento final y <strong>no hacerla p\u00fablica hasta que est\u00e9 completamente lista<\/strong>.<\/p>\n<h4>10. Dile a Google que no indexe tu sitio<\/h4>\n<p>En relaci\u00f3n con el punto anterior, cuando est\u00e1s desarrollando una nueva web debes <strong>indicar a Google y al resto de buscadores que no deben rastrearla ni indexarla<\/strong>.<\/p>\n<p>De lo contrario, en cualquier momento podr\u00edan entrar en tus p\u00e1ginas y clasificarlas incorrectamente por no estar todav\u00eda terminadas.<\/p>\n<p>Si usas WordPress, puedes <strong>activar la etiqueta No Index <\/strong>en todas las p\u00e1ginas del sitio web.<\/p>\n<p>Tambi\u00e9n puedes configurarlo f\u00e1cilmente en el <strong>fichero robots.txt con la directriz que se ve en la imagen:<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21041 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-robots-restringir-acceso.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase pre-migraci\u00f3n. Instrucciones en el robots.txt para impedir el acceso de los buscadores al sitio web.\" width=\"800\" height=\"400\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-robots-restringir-acceso.png 800w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-robots-restringir-acceso-300x150.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-robots-restringir-acceso-768x384.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>As\u00ed te asegurar\u00e1s de que tu web s\u00f3lo ser\u00e1 tenida en cuenta cuando est\u00e9 preparada para ello.<\/p>\n<h3>Ejecuci\u00f3n del proceso de migraci\u00f3n SEO<\/h3>\n<p>Ha llegado el d\u00eda.<\/p>\n<p>Nos hemos organizado convenientemente y es el momento de hacer la migraci\u00f3n de nuestra web.<\/p>\n<p>Para que todo llegue a buen puerto, aqu\u00ed tienes el listado de tareas que convendr\u00eda completar.<\/p>\n<h4>11. Configura tus DNS<\/h4>\n<p>Seg\u00fan el tipo de migraci\u00f3n que vayas a realizar deber\u00e1s configurar los DNS para que <strong>el dominio apunte al servidor apropiado<\/strong>.<\/p>\n<p>Por ejemplo, si est\u00e1s haciendo un cambio de hosting, este paso es imprescindible.<\/p>\n<p>En cambio, si est\u00e1s trabajando en un dominio nuevo, seguramente esta operaci\u00f3n ya la hayas realizado al dar de alta dicho dominio y trabajar tu nueva web sobre \u00e9l.<\/p>\n<p>En cualquier caso, debes saber que la propagaci\u00f3n de los cambios en los registros DNS puede tardar desde unos segundos a varias horas en finalizar. Tenlo en cuenta cuando planifiques la fecha de tu migraci\u00f3n SEO.<\/p>\n<h4>12. Implementa los redireccionamientos 301<\/h4>\n<p>Es hora de implementar los redireccionamientos 301 de nuestro <strong>mapa de redirecciones SEO<\/strong>.<\/p>\n<p>Esta tarea, que parece complicada, en realidad no lo es tanto, ya que <strong>existen muchas herramientas que te facilitan el trabajo<\/strong>.<\/p>\n<p>Para WordPress tienes varios plugins que puedes utilizar. Uno de ellos es \u201cRedirection\u201d, que te permite importar un conjunto de redirecciones en bloque.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21040 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-redirection.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase de migraci\u00f3n. Plugin de redirecciones para WordPress.\" width=\"700\" height=\"300\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-redirection.png 700w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-redirection-300x129.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/p>\n<p>De este modo, puedes exportar tu fichero Excel de redirecciones a CSV e importarlo directamente a tu WordPress con un par de clics.<\/p>\n<p>Pero todav\u00eda queda algo por hacer.<\/p>\n<p>Ahora toca <strong>comprobar que todas las redirecciones funcionan<\/strong> y no se producen errores 404. Eso lo veremos en la siguiente tarea.<\/p>\n<h4>13. Haz un rastreo a tu sitio web tras la migraci\u00f3n<\/h4>\n<p>Hicimos una auditor\u00eda de la web antes de la migraci\u00f3n y vamos a hacer otra auditor\u00eda ahora para ver que todo sigue seg\u00fan el plan.<\/p>\n<p>Con Screaming Frog <strong>revisaremos que las URLs son correctas<\/strong>, redirigen a los lugares indicados y no devuelven c\u00f3digos de error.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21029 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-auditoria-web.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase de migraci\u00f3n. Auditor\u00eda web con Screaming Frog.\" width=\"1024\" height=\"700\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-auditoria-web.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-auditoria-web-300x205.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-auditoria-web-768x525.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Tambi\u00e9n observaremos que las p\u00e1ginas que nos interesa posicionar est\u00e1n <strong>marcadas como indexables<\/strong>.<\/p>\n<p>Adem\u00e1s, <strong>verificaremos los enlaces internos<\/strong>. Para ello, partiremos de la exportaci\u00f3n que obtuvimos durante la fase previa y veremos que no hemos perdido enlaces durante la migraci\u00f3n.<\/p>\n<p>Conviene que los enlaces internos no tengan una redirecci\u00f3n ya que eso puede afectar a la velocidad del sitio web. Por eso, <strong>siempre que podamos cambiaremos nuestros enlaces internos por su URL final<\/strong> en todas las p\u00e1ginas donde aparezcan.<\/p>\n<p>Finalmente, <strong>comprobaremos las p\u00e1ginas de destino de los backlinks<\/strong> que recibimos, al menos de los m\u00e1s destacados, para asegurarnos de mantener nuestra autoridad.<\/p>\n<h4>14. Revisa las etiquetas canonicals<\/h4>\n<p>Como parte de la auditor\u00eda SEO anterior, debemos prestar especial atenci\u00f3n a las etiquetas canonicals.<\/p>\n<p>Si no sabes muy bien qu\u00e9 son estas etiquetas, te recomiendo echar un ojo a este <a href=\"https:\/\/dinorank.com\/blog\/etiqueta-canonical-seo\/\">post sobre canonicals<\/a> que seguro te saca de dudas.<\/p>\n<p>En cualquier caso, una etiqueta canonical mal puesta puede ser un foco de problemas SEO.<\/p>\n<p>Por eso, conviene que revises todas las etiquetas de este tipo que hay en tu web y <strong>comprobar si apuntan a las URLs correctas<\/strong>.<\/p>\n<p>Con Screaming Frog puedes revisarlo con bastante facilidad.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21031 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-canonicals.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase de migraci\u00f3n. Revisi\u00f3n de etiquetas canonicals con Screaming Frog.\" width=\"1024\" height=\"700\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-canonicals.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-canonicals-300x205.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-canonicals-768x525.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h4>15. Actualiza el Sitemap.xml y el el Robots.txt<\/h4>\n<p>Cuando ya hemos comprobado que todo est\u00e1 bien, es el momento de <strong>hacer p\u00fablica nuestra nueva web y permitir el paso a los motores de b\u00fasqueda<\/strong>.<\/p>\n<p>Para ello, elimina el atributo No Index de las p\u00e1ginas y actualiza el fichero Robots.txt con las directivas adecuadas para que Google distinga qu\u00e9 partes puede visitar y cu\u00e1les no.<\/p>\n<p>Aqu\u00ed te dejo una <a href=\"https:\/\/dinorank.com\/blog\/como-configurar-robotstxt-wordpress\/\">gu\u00eda sobre el Robots.txt<\/a> para que sepas c\u00f3mo hacerlo.<\/p>\n<p>Adem\u00e1s, <strong>revisa el Mapa del Sitio<\/strong> (fichero sitemap.xml) y observa que contiene todo lo que quieres indexar.<\/p>\n<h4>16. Avisa a Google Search Console de tus cambios<\/h4>\n<p>Por \u00faltimo, s\u00f3lo queda notificar a Google que has modificado tu sitio web. Aqu\u00ed pueden darse varias situaciones:<\/p>\n<ul>\n<li>Si tus URLs no han cambiado, no tienes que hacer nada en este punto.<\/li>\n<li>Si has modificado la estructura de tu web, deber\u00e1s subir a Google Search Console el nuevo Sitemap para que lo procese.<\/li>\n<li>Si has migrado tu web a un nuevo dominio, tendr\u00e1s que dar de alta la nueva propiedad de dominio en GSC.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21036 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-google-search-console.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase de migraci\u00f3n. Dar de alta un dominio en Google Search Console.\" width=\"775\" height=\"616\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-google-search-console.png 775w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-google-search-console-300x238.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-google-search-console-768x610.png 768w\" sizes=\"(max-width: 775px) 100vw, 775px\" \/><\/p>\n<p>De este modo, tras unos d\u00edas, los cambios empezar\u00e1n a ser visibles en Google.<\/p>\n<h3>Tareas imprescindibles para despu\u00e9s de una migraci\u00f3n SEO<\/h3>\n<p>\u00a1Enhorabuena! Ya has hecho la migraci\u00f3n de tu web y te has ocupado de gestionar los factores que afectan al SEO.<\/p>\n<p>Pero el trabajo no termina aqu\u00ed.<\/p>\n<p>Ahora toca revisar que todo funciona correctamente y que continuar haci\u00e9ndolo durante los d\u00edas siguientes a la migraci\u00f3n.<\/p>\n<h4>17. Realiza una auditor\u00eda SEO del nuevo sitio web<\/h4>\n<p>\u00bfAdivinas qu\u00e9 toca ahora?<\/p>\n<p>\u00a1Exacto! Una <strong>nueva auditor\u00eda de la web<\/strong>.<\/p>\n<p>Recuerda que las auditor\u00edas son procesos que deber\u00edas efectuar de forma peri\u00f3dica para asegurar el rendimiento de tu web desde el punto de vista SEO.<\/p>\n<p>*Si quieres aprender m\u00e1s sobre los auditor\u00edas SEO, <a href=\"https:\/\/dinorank.com\/blog\/auditoria-seo\/\">visita esta p\u00e1gina<\/a>.<\/p>\n<p>En este caso, deber\u00eda ser <strong>m\u00e1s exhaustiva que la que hiciste durante la migraci\u00f3n<\/strong> y fijarte en detalles que quiz\u00e1 hubieras pasado antes por alto, por tener un impacto menor.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21030 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-auditoria-web-profunda.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase post-migraci\u00f3n. Auditor\u00eda web con Screaming Frog.\" width=\"1024\" height=\"700\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-auditoria-web-profunda.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-auditoria-web-profunda-300x205.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-auditoria-web-profunda-768x525.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Adem\u00e1s de verificar cualquier error en las URLs, ser\u00eda conveniente echar un vistazo a elementos como las metaetiquetas, los <a href=\"https:\/\/dinorank.com\/blog\/datos-estructurados-para-seo-como-implementar\/\">datos estructurados<\/a> o la velocidad de carga de la p\u00e1gina.<\/p>\n<p>Son factores que influyen en el posicionamiento y que debes cuidar si quieres que tu web no pierda relevancia en ning\u00fan momento.<\/p>\n<h4>18. Monitoriza todo lo que puedas<\/h4>\n<p><strong>Los d\u00edas posteriores a una migraci\u00f3n son cr\u00edticos <\/strong>a la hora de valorar si ha tenido alg\u00fan impacto, especialmente si afecta negativamente al sitio web.<\/p>\n<p>Por eso, durante un tiempo deber\u00e1s <strong>comprobar peri\u00f3dicamente el estado en el que se encuentra la indexaci\u00f3n de tus p\u00e1ginas y el volumen de visitas<\/strong> recibidas.<\/p>\n<p>Un vistazo diario a Google Search Console y Google Analytics, nada m\u00e1s empezar tu jornada, puede resultar crucial para detectar problemas y atajarlos antes de que tengan mayores consecuencias.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-21037 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-gsc-indexacion.png\" alt=\"Migraci\u00f3n SEO de un sitio web. Fase post-migraci\u00f3n. Monitorizar las p\u00e1ginas indexadas en Google Search Console.\" width=\"1024\" height=\"582\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-gsc-indexacion.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-gsc-indexacion-300x171.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/02\/migracion-seo-gsc-indexacion-768x437.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h4>19. Actualiza los enlaces externos de otros portales<\/h4>\n<p>Buena parte de la visibilidad y del tr\u00e1fico que recibe tu web procede de sus enlaces externos.<\/p>\n<p>Si has cambiado tus URLs, debes <strong>asegurarte de que estos enlaces siguen funcionando<\/strong>.<\/p>\n<p>Gracias a las redirecciones 301 que has implementado durante la migraci\u00f3n, esto no deber\u00eda ser ning\u00fan problema.<\/p>\n<p>Sin embargo, siempre es mejor tener un enlace directo que una redirecci\u00f3n.<\/p>\n<p>Por eso, <strong>si tienes el control sobre el enlace te recomiendo actualizarlo<\/strong> para que apunte directamente a la URL correcta. Ser\u00eda el caso, por ejemplo, de tus perfiles en redes sociales o de tu ficha de Google My Business.<\/p>\n<h4>20. Decide qu\u00e9 hacer con el dominio y el hosting antiguo<\/h4>\n<p>Cuando ya ha pasado un tiempo prudencial y te has asegurado de que la migraci\u00f3n SEO del sitio web ha sido un \u00e9xito, es el momento de decidir qu\u00e9 hacer con los recursos antiguos.<\/p>\n<p>En concreto, si has migrado de hosting y el anterior ya no lo est\u00e1s utilizando, puedes darlo de baja sin problemas. As\u00ed te ahorrar\u00e1s un coste que ya no necesitas realizar.<\/p>\n<p>Pero con los dominios no ocurre lo mismo. Si la migraci\u00f3n ha supuesto un cambio de dominio, el anterior no debes darlo de baja.<\/p>\n<p>Recuerda que muchos enlaces pueden apuntar todav\u00eda al dominio antiguo y que \u00e9ste es el que te permiti\u00f3 obtener parte de la popularidad que tienes ahora mismo.<\/p>\n<p>Por eso, <strong>mant\u00e9n tu viejo dominio para asegurarte de que todos los enlaces redireccionan correctamente<\/strong> y conservar la autoridad que te ha transmitido hasta el d\u00eda de hoy.<\/p>\n<h2>Conclusiones sobre las migraciones SEO<\/h2>\n<p>Si alguna vez has hecho una mudanza, estar\u00e1s de acuerdo conmigo en que es una tarea que te puede dar m\u00e1s de un quebradero de cabeza.<\/p>\n<p>Buscar un d\u00eda para hacerla, preparar las cosas en cajas, asegurarte de que no se rompe nada en el transporte, volver a colocar todo de nuevo en el lugar que le corresponde,&#8230;<\/p>\n<p>En el mundo digital, la migraci\u00f3n de un sitio web es lo m\u00e1s parecido a una mudanza que puedes encontrar.<\/p>\n<p>Tienes que organizarte bien si no quieres llevarte alguna sorpresa desagradable. Y una p\u00e9rdida en el posicionamiento SEO puede ser uno de esos efectos indeseados que no vas a querer que se produzcan.<\/p>\n<p>Para evitarlo, en este art\u00edculo<strong> te he mostrado los puntos m\u00e1s importantes que deber\u00edas revisar en toda migraci\u00f3n SEO<\/strong>. Te recomiendo guardarlo entre tus favoritos y volver a leerlo cuando tengas que enfrentarte a un cambio importante en tu sitio web.<\/p>\n<p>Estoy convencido de que, si aplicas lo que hemos visto en este art\u00edculo, ser\u00e1s capaz de hacer cualquier tipo de migraci\u00f3n web con las m\u00e1ximas garant\u00edas de \u00e9xito.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Imagina que llevas trabajando el SEO de una web desde hace tiempo y que un d\u00eda decides hacer un redise\u00f1o para modernizar su imagen. La nueva web es preciosa. Mucho m\u00e1s vistosa e intuitiva que la anterior. Pero, de repente, empiezas a ver c\u00f3mo tu tr\u00e1fico empieza a caer de la noche a la ma\u00f1ana. [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":22535,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[10],"tags":[],"class_list":["post-21027","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aprender-seo"],"acf":[],"_links":{"self":[{"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts\/21027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/comments?post=21027"}],"version-history":[{"count":13,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts\/21027\/revisions"}],"predecessor-version":[{"id":33115,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts\/21027\/revisions\/33115"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/media\/22535"}],"wp:attachment":[{"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/media?parent=21027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/categories?post=21027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/tags?post=21027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}