{"id":10958,"date":"2020-06-29T20:47:07","date_gmt":"2020-06-29T18:47:07","guid":{"rendered":"https:\/\/blog.hostinger.io\/es-tutoriales\/?p=10958"},"modified":"2025-01-20T17:57:11","modified_gmt":"2025-01-20T16:57:11","slug":"redireccionar-php","status":"publish","type":"post","link":"\/es\/tutoriales\/redireccionar-php","title":{"rendered":"C\u00f3mo redireccionar usando PHP (de forma segura)"},"content":{"rendered":"<p>Redireccionar usando PHP es una herramienta incre&iacute;blemente &uacute;til, pero tambi&eacute;n puede ser peligrosa si no se implementa correctamente.<\/p><p>Si has le&iacute;do nuestra introducci&oacute;n (en ingl&eacute;s) a PHP 7.4 y nuestra gu&iacute;a sobre <a href=\"\/es\/tutoriales\/como-crear-una-pagina-web\/\">c&oacute;mo crear un sitio web<\/a>, sabr&aacute;s que la funci&oacute;n de encabezado ( <strong>header()<\/strong> ) se puede utilizar para redirigir f&aacute;cilmente a un usuario a otra p&aacute;gina. Sin embargo, en realidad, usar esta funci&oacute;n no es tan simple como parece.<\/p><p>En esta gu&iacute;a, te mostraremos c&oacute;mo redireccionar usando PHP sin causar grandes problemas a largo plazo.<\/p><figure class=\"wp-block-image size-large\"><a href=\"https:\/\/assets.hostinger.com\/content\/tutorials\/pdf\/Speed-Up-Your-Website-ES.pdf\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"283\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/eBook-Speed-Up-your-website-ES.png\/public\" alt=\"\" class=\"wp-image-25983\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/eBook-Speed-Up-your-website-ES.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/eBook-Speed-Up-your-website-ES.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/eBook-Speed-Up-your-website-ES.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/eBook-Speed-Up-your-website-ES.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/eBook-Speed-Up-your-website-ES.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-el-metodo-basico-para-un-redireccionamiento-php\">El m&eacute;todo b&aacute;sico para un redireccionamiento PHP<\/h2><p>La mayor&iacute;a de las gu&iacute;as te dir&aacute;n que para redireccionar usando PHP puedes usar la funci&oacute;n <strong>header ()<\/strong> en la parte superior de tus p&aacute;ginas. Para hacerlo, usa la funci&oacute;n para enviar una nueva URL, as&iacute;:<\/p><pre class=\"wp-block-preformatted\">header('Location: '.$nuevaURL.php);<\/pre><p>Esta funci&oacute;n de encabezado debe colocarse antes de pasar cualquier <a href=\"\/es\/tutoriales\/que-es-html\">HTML<\/a> o texto a los navegadores de los usuarios, por lo que debe estar justo en la parte superior de la p&aacute;gina. Eso significa que debe aparecer antes de la declaraci&oacute;n <strong>&lt;!DOCTYPE&gt;,<\/strong> antes de cualquier Java y antes de cualquier c&oacute;digo PHP. As&iacute; enviar&aacute; a los usuarios a la nueva URL.<\/p><p>Si bien puede parecer simple, cuando se trata de la funci&oacute;n <strong>header ()<\/strong>, la simplicidad del c&oacute;digo puede llevar a los desarrolladores a una falsa sensaci&oacute;n de seguridad. As&iacute; que veamos c&oacute;mo puedes usar esta funci&oacute;n correctamente.<\/p><h3 class=\"wp-block-heading\" id=\"h-die-y-exit\">Die () y Exit ()<\/h3><p>Primero, debes usar el modificador <strong>die ()<\/strong> o <strong>exit ()<\/strong> cada vez que uses una redirecci&oacute;n. En resumen, el problema es que los rastreadores y los robots pueden ignorar los encabezados, por lo que la p&aacute;gina desde la que pensabas que estabas redirigiendo es totalmente accesible para ellos. Si, en otras palabras, utilizar un redireccionamiento de encabezado para proteger una p&aacute;gina en particular, no te ofrece ninguna protecci&oacute;n.<\/p><p>Es por eso que debes cerrar la redirecci&oacute;n si esta es ignorada. La forma de hacerlo es agregar <strong>die ()<\/strong> o <strong>exit () <\/strong>despu&eacute;s de tu redirecci&oacute;n:<\/p><pre class=\"wp-block-preformatted\">header(\"Location: .$nuevaURL.php\");\ndie();<\/pre><h3 class=\"wp-block-heading\" id=\"h-urls-relativas-y-absolutas\">URLs relativas y absolutas<\/h3><p>Ahora bien, hablemos sobre las <a href=\"\/es\/tutoriales\/que-es-una-url\">URL<\/a> relativas y absolutas en los redireccionamientos. <a href=\"https:\/\/greenbytes.de\/tech\/webdav\/rfc7231.html#header.location\" target=\"_blank\" rel=\"noreferrer noopener\">RFC 7231<\/a> te permite usar ambas, pero debes tener mucho cuidado al usar redireccionamientos relativos. Esto se debe a que algunos creadores de sitios web clasifican y cambian el nombre de las p&aacute;ginas PHP. Lo que significa que si est&aacute;s trabajando en tu PHP a trav&eacute;s de un creador de sitios web, puedes terminar haciendo que todos tus <a href=\"\/es\/tutoriales\/como-redireccionar-una-url-a-otra\">redireccionamientos<\/a> fallen.<\/p><p>Desafortunadamente, en este momento no hay una forma real de evitar este problema, salvo tener una visi&oacute;n general cuidadosa de hacia d&oacute;nde apuntan tus redirecciones.<\/p><h3 class=\"wp-block-heading\" id=\"h-codigos-de-estado\">C&oacute;digos de estado<\/h3><p>El tercer problema con redireccionar usando PHP est&aacute;ndar es que el operador de &laquo;ubicaci&oacute;n&raquo; de PHP a&uacute;n devuelve el c&oacute;digo <a href=\"https:\/\/en.wikipedia.org\/wiki\/HTTP_302\" target=\"_blank\" rel=\"noreferrer noopener\">HTTP 302<\/a>. No debes permitir que haga eso, porque muchos navegadores web implementan este c&oacute;digo de una manera que est&aacute; totalmente en desacuerdo con la forma en que se supone que funciona: esencialmente usan el comando GET en lugar de realizar una redirecci&oacute;n &laquo;real&raquo;.<\/p><p>Por lo tanto, la mejor pr&aacute;ctica al crear redirecciones PHP es especificar el c&oacute;digo a devolver. Desafortunadamente, el c&oacute;digo correcto para usar es un punto de discusi&oacute;n. HTTP 301 indica una redirecci&oacute;n permanente, lo que puede causar problemas para restaurar tu p&aacute;gina original. Y, muchos navegadores entienden que HTTP 303 es &laquo;otro&raquo; y puede causar problemas al indexar tu p&aacute;gina a trav&eacute;s de motores de b&uacute;squeda.<\/p><p>En la pr&aacute;ctica, y hasta que se resuelva esta situaci&oacute;n, recomendamos que uses HTTP 303.<\/p><h3 class=\"wp-block-heading\" id=\"h-verifica-la-documentacion\">Verifica la documentaci&oacute;n<\/h3><p>Adem&aacute;s de tomar las precauciones b&aacute;sicas anteriores, debes tomarte un tiempo para leer la documentaci&oacute;n sobre el uso de redireccionamientos de PHP antes de publicarlos. Deber&iacute;as consultar el <a href=\"http:\/\/www.php.net\/manual\/en\/function.header.php\" target=\"_blank\" rel=\"noreferrer noopener\">manual de PHP<\/a> para asegurarte de que comprendes lo que est&aacute;s haciendo, as&iacute; como la <a href=\"http:\/\/www.w3.org\/Protocols\/rfc2616\/rfc2616-sec14.html#sec14.30\" target=\"_blank\" rel=\"noreferrer noopener\">documentaci&oacute;n del W3C<\/a> para asegurarte de que sigues las mejores pr&aacute;cticas.<\/p><p>Y mientras te pones al d&iacute;a con esta lectura, aseg&uacute;rate de proteger tambi&eacute;n tu sitio web de <a href=\"https:\/\/privacycanada.net\/network-vulnerabilities\/\" target=\"_blank\" rel=\"noreferrer noopener\">vulnerabilidades comunes<\/a>: si ya est&aacute;s en la posici&oacute;n de tener que usar redireccionamientos PHP, es probable que la seguridad de tu sitio necesite una auditor&iacute;a.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"179\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/06\/privacycanada-network-vulnerabilities-list-1536x268-1.png\/public\" alt=\"Lista de vulnerabilidades de red de Privacy Canada\" class=\"wp-image-10959\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/06\/privacycanada-network-vulnerabilities-list-1536x268-1.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/06\/privacycanada-network-vulnerabilities-list-1536x268-1.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/06\/privacycanada-network-vulnerabilities-list-1536x268-1.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2020\/06\/privacycanada-network-vulnerabilities-list-1536x268-1.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div><h3 class=\"wp-block-heading\" id=\"h-otros-metodos\">Otros m&eacute;todos<\/h3><p>Dados todos estos problemas, probablemente te est&eacute;s preguntando por qu&eacute; deber&iacute;as redireccionar usando PHP. Esa es una buena pregunta. Aunque los redireccionamientos de PHP generalmente se ejecutan m&aacute;s r&aacute;pidamente que otros tipos de redireccionamiento y, por lo tanto, pueden ser una herramienta importante para mejorar la velocidad del sitio web, existen otras opciones disponibles.<\/p><p>Hay dos enfoques principales para hacer esto. Puedes usar el elemento HTML <strong>&lt;meta&gt;<\/strong> para redirigir desde la parte HTML de tu p&aacute;gina, o usar <a href=\"\/es\/tutoriales\/que-es-javascript-introduccion-basica\/\">JavaScript<\/a>. El primer enfoque (usar <strong>&lt;meta&gt;<\/strong>) se ver&iacute;a as&iacute;:<\/p><pre class=\"wp-block-preformatted\">&lt;meta http-equiv=\"refresh\" content=\"0;url=newpage.php\"&gt;<\/pre><p>El segundo enfoque (usar JavaScript) es un poco m&aacute;s elegante y ciertamente se ve m&aacute;s profesional:<\/p><pre class=\"wp-block-preformatted\">window.location.replace(\"http:\/\/nuevapagina.php\/\");<\/pre><p>Ambos enfoques se ejecutar&aacute;n un poco m&aacute;s lento que una redirecci&oacute;n <strong>header ()<\/strong> inmediata, pero posiblemente sean m&aacute;s flexibles.<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/es\/hosting-web\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-Web-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-29291\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-Web-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-Web-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-Web-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-Web-hosting_in-text-banner.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-Web-hosting_in-text-banner.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusi&oacute;n<\/h2><p>Si bien al seguir los pasos anteriores deber&iacute;as poder redireccionar usando PHP de forma segura, si est&aacute;s en posici&oacute;n de utilizar m&uacute;ltiples redireccionamientos PHP, probablemente sea hora de repensar la estructura de tu sitio.<\/p><p>Hay un par de buenas razones para hacerlo. La primera es que no todos los servidores web se crean de la misma manera, y si env&iacute;as a todos tus visitantes en una ruta tortuosa alrededor de tu sitio, afectar&aacute; su rendimiento. Esto puede mejorarse hasta cierto punto utilizando un proveedor de <a href=\"\/es\/hosting-web\">alojamiento web asequible<\/a>, pero solo hasta cierto punto.<\/p><p>La segunda raz&oacute;n es que la p&aacute;gina desde la que est&aacute;s redirigiendo podr&iacute;a estar recopilando datos sobre tus visitantes sin que lo sepas, particularmente si est&aacute;s utilizando un software de an&aacute;lisis web para rastrear el rendimiento de tu sitio. En nuestro mundo post-GDPR, eso podr&iacute;a tener consecuencias significativas.<\/p><p>En resumen, ten cuidado con los redireccionamientos de PHP, &uacute;salos correctamente y &uacute;salos donde y cuando sea absolutamente necesario.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Redireccionar usando PHP es una herramienta incre&iacute;blemente &uacute;til, pero tambi&eacute;n puede ser peligrosa si no se implementa correctamente. Si has le&iacute;do nuestra introducci&oacute;n (en ingl&eacute;s) a PHP 7.4 y nuestra gu&iacute;a sobre c&oacute;mo crear un sitio web, sabr&aacute;s que la funci&oacute;n de encabezado ( header() ) se puede utilizar para redirigir f&aacute;cilmente a un usuario [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/es\/tutoriales\/redireccionar-php\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":138,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"C\u00f3mo Redireccionar Usando PHP (De Forma Segura) %page%","rank_math_description":"Si bien redireccionar con PHP es una herramienta muy \u00fatil a tu disposici\u00f3n, es necesario conocer los riesgos involucrados y evitar posibles contratiempos.","rank_math_focus_keyword":"redireccionar php","footnotes":""},"categories":[7497],"tags":[13504],"class_list":["post-10958","post","type-post","status-publish","format-standard","hentry","category-php","tag-redireccionar-php"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/php-redirect","default":0},{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/redirecionamento-php","default":0},{"locale":"fr-FR","link":"https:\/\/www.hostinger.com\/fr\/tutoriels\/redirection-php","default":0},{"locale":"es-ES","link":"https:\/\/www.hostinger.com\/es\/tutoriales\/redireccionar-php","default":0},{"locale":"id-ID","link":"https:\/\/www.hostinger.com\/id\/tutorial\/cara-membuat-redirect-php","default":0},{"locale":"nl-NL","link":"https:\/\/www.hostinger.com\/nl\/tutorials\/php-redirect","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/php-redirect","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/php-redirect","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/php-redirect","default":0},{"locale":"es-MX","link":"https:\/\/www.hostinger.com\/mx\/tutoriales\/redireccionar-php","default":0},{"locale":"es-CO","link":"https:\/\/www.hostinger.com\/co\/tutoriales\/redireccionar-php","default":0},{"locale":"es-AR","link":"https:\/\/www.hostinger.com\/ar\/tutoriales\/redireccionar-php","default":0},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/redirecionamento-php","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/php-redirect","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/php-redirect","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/php-redirect","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/php-redirect","default":0}],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/10958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/users\/138"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/comments?post=10958"}],"version-history":[{"count":11,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/10958\/revisions"}],"predecessor-version":[{"id":44891,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/10958\/revisions\/44891"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/media?parent=10958"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/categories?post=10958"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/tags?post=10958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}