2011-10-26 42 views

Respuesta

3

me acabo de encontrar con esto y aquí está la solución que se me ocurrió. Prefiero este método porque no redirecciona ningún subdirectorio.

RewriteCond %{REQUEST_URI} ^/root-directory[/]? 
RewriteCond %{REQUEST_URI} !^/root-directory/+[/]? 
RewriteRule (.*) http://www.example.com/ [R=301,L] 
+2

La respuesta de billynoah a continuación es una solución mejor y más limpia para esto. – Jestep

+0

Me gustaría redireccionar solo a otro sitio. no páginas secundarias 'example.com' a' newsite.com' –

3

Tal vez:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/folder[/]? 
RewriteCond %{REQUEST_URI} !^/folder/subfolder[/]? 
RewriteRule (.*) /newfolder/$1 [R=301,L] 

Esto debe redirigir/carpeta a/NewFolder pero dejar de lado/carpeta/subcarpeta

1

Qué servidor está usando? Se podría, por ejemplo, el uso de mod_rewrite si utilizar Apache y hacer algo como esto

RewriteEngine On 
    RewriteOptions Inherit 
    RedirectMatch permanent ^/folder/$ http://example.com/newfolder 
    #I haven't tested the above redirect btw^

y ponerlo en un archivo .htaccess en su/carpeta/directorio (suponiendo que usted puede alterar la configuración de Apache, lo que significa que tiene la opción AllowOverride en ese host virtual)

aquí hay más información http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

+1

Esta es la mejor respuesta porque uno puede utilizarlo desde un host virtual en el archivo vhost.conf Apache. Lo probé, funciona. Gracias, cyph3r! –

27

respuesta de Jestep por encima de redirecciones "/ root-directorio", pero no consigue redirigir "/ root-directorio /". Esto se puede solucionar y simplifica simplemente:

RewriteCond %{REQUEST_URI} ^/folder[/]?$ 
RewriteRule (.*) /newfolder [R=301,L] 

Esto redirigirá "/ carpeta" y "carpeta//" pero deje todos los subdirectorios solo.

+1

Mucho mejor que mi ejemplo. – Jestep

+1

@PrabuGuna: debe buscar Stack Overflow; si no puede encontrar una respuesta, publíquela como pregunta. – billynoah

1

He intentado otros métodos aquí con éxito mixto. No soy un experto en Apache de ninguna manera, pero aquí está el sencillo delineador de líneas que funciona siempre para mí. Solo uso RedirectMatch en lugar de Redirect e incluyo un RegEx muy simple para finalizar la coincidencia en o justo antes de la barra diagonal, lo que significa que los subdirectorios nunca deberían calificar como una coincidencia.

RedirectMatch 301 ^/folder[/]?$ /newfolder

Cuestiones relacionadas