.htaccess 301 redireccionamiento de una sola página


Después de un rediseño del sitio, tengo un par de páginas que necesitan ser redirigidas. Todo se mantiene en el mismo dominio, solo un par de cosas se han reorganizado y/o renombrado. Son de la forma:

/contacto.php

Es ahora:

/ contact-us.php

Usando el .archivo htaccess, he añadido esta línea, que es la que me parece más recomendada:

RedirectMatch 301 /contact.php /contact-us.php

Esto está muy bien-hace el trabajo - el problema es, también redirecciones:

  • /team1/contact.php
  • /non-existant-folder/contact.php

Hay una forma de especificar que solo quiero redirigir el contacto.php en la raíz?

Author: Dhaust, 2009-09-14

6 answers

RedirectMatch utiliza una expresión regular que se compara con la ruta de la URL. Y su expresión regular {[2] } solo significa cualquier ruta de URL que contenga /contact.php pero no solo cualquier ruta de URL que sea exactamente /contact.php. Así que usa los anclajes para el inicio y el final de la cadena (^ y $):

RedirectMatch 301 ^/contact\.php$ /contact-us.php
 76
Author: Gumbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-14 11:59:36

Esto debería hacerlo

RedirectPermanent /contact.php /contact-us.php 
 20
Author: duckyflip,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-14 11:51:14
redirect 301 /contact.php /contact-us.php

No tiene sentido usar la regla redirectmatch y luego tener que escribir sus enlaces para que coincidan exactamente. Si usted no incluye usted no tiene que excluir! Simplemente use redirect sin coincidencia y luego use enlaces normalmente

 8
Author: Jon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-19 15:48:20

También podría usar una RewriteRule si desea la capacidad de emparejar plantillas y redirigir URL.

 0
Author: Ryall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-14 11:51:16

Si prefiere usar la solución más simple posible para un problema, una alternativa a RedirectMatch es, la directiva más básica, Redirect.

No usa coincidencia de patrones y por lo tanto es más explícito y más fácil de entender para otros.

Es decir

<IfModule mod_alias.c>

#Repoint old contact page to new contact page:
Redirect 301 /contact.php http://example.com/contact-us.php

</IfModule>

Las cadenas de consulta deben transferirse porque los documentos dicen:

La información de ruta adicional más allá de la URL-ruta coincidente será anexo al objetivo URL.

 0
Author: JW.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-18 13:57:10

Redirigirá la página de tu tienda a tu página de contacto

    <IfModule mod_rewrite.c>
    RewriteEngine On 
    RewriteBase /
    Redirect 301 http://www.youtdomain.com/store http://www.youtdomain.com/contact
    </IfModule>
 -1
Author: gurcharan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-29 00:50:37