redirigir el subdirectorio 301 en combinación con RewriteCond

Estoy intentando redirigir una carpeta completa (que contiene cientos de páginas) a la misma carpeta en otro dominio. El sitio usa un CMS que usa rewritecond para generar bonitas url de página:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Esto parece estar en conflicto con mi redirección. Cuando uso redirect 301/folder/http: //www.site.invalid/folder/ , las páginas se redirigen a http: //www.site.invalid/folder/index.php? q = folder/pagename.html que devuelve un 404.

¿Alguien podría señalarme en la dirección correcta?

0
Hola, nrathaus, no hay otro rewritecond. El sitio original solo tiene el redireccionamiento, el sitio de destino de redireccionamiento solo tiene las líneas de arriba.
agregado el autor bolvo, fuente
por favor proporcione el otro RewriteCond que cree que está colisionando
agregado el autor nrathaus, fuente

2 Respuestas

Mantenga todo su .htaccess así:

RewriteEngine On

RewriteRule ^(folder/.*)$ http://www.site.invalid/$1 [R=301,NC,NE,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?q=$1 [L,QSA]

En general, mantenga sus reglas 301 antes que otras reglas generales.

0
agregado
gracias por su respuesta. Pero lo hice y no funciona
agregado el autor bolvo, fuente
ok, para ser claro: sitio1 necesita ser redirigido a sitio2. htaccess en site1 ahora es código RewriteEngine en RewriteRule ^ (. *) $ site.invalid/folder/index.php? q = $ 1 [L] código site2 tiene código RewriteEngine On RewriteCond% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_FILENAME}! -d RewriteRule ^ (. +) $ index.php? q = $ 1 [L, QSA] código agregar el código anterior no hace nada.
agregado el autor bolvo, fuente
para ser claro: tengo el http, es este sistema de comentarios el que lo corta de mi comentario.
agregado el autor bolvo, fuente
¿Qué URL no funcionó para ti? ¿Puedes probar esto en un navegador diferente? ¿Existe también algún .htaccess en /folder/ también?
agregado el autor anubhava, fuente
Ver mi respuesta arriba. Necesita tener http:// en la URL de destino, pero solo tiene site.invalid/folder/index.php? Q = $ 1 [L]
agregado el autor anubhava, fuente
Es bastante difícil leer el código .htaccess de los comentarios. ¿Puede publicar ambos archivos .htaccess de site1 y site2 editando su pregunta.
agregado el autor anubhava, fuente

En lugar de usar un 301 como este:

redirect 301 /folder/ http://www.site.invalid/folder/

Trate de usar un 301 como este y colóquelo antes que el otro reescriba:

RewriteRule ^/folder/(.*)$ http://www.site.invalid/folder/$1 [R=301,L]

Básicamente lo que sucederá ahora es que esta regla se ejecutará primero, haga la redirección 301 (porque tiene una bandera R = 301), y como tiene una última bandera (L), entonces evitará que el servidor procese más reescrituras después de esa fecha. .

Entonces, su archivo htaccess se vería así:

RewriteEngine On

RewriteRule ^/folder/(.*)$ http://www.site.invalid/folder/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
0
agregado
Gracias Nick, lo que tengo hasta ahora, gracias a tu publicación, es: código RewriteEngine en RewriteRule ^ (. *) $ site.invalid/folder/index.php? q = $ 1 [L] code Ahora las páginas se redireccionan a < a href = "http: //www.site.invalid/folder/index.php? q = pagename" rel = "nofollow noreferrer"> site.invalid/folder/index.php? q = pagename que ya muestra la página, pero no "embellece" la url. No estoy seguro de por qué necesito usar la reescritura en el nuevo
agregado el autor bolvo, fuente
La redirección no va a la url bonita, incluso si agrego la reescritura en el sitio 2. No puedo entender por qué ... Ya estoy contento de que las páginas se muestren, pero desde un punto de vista SEO estaría mucho más feliz si se muestra la bonita URL. ¿Por qué no funciona exactamente el mismo código para la redirección en www.site3.tld a www.site.invalid/folder /? Las páginas se redirigen a www.site.invalid/folderpagename.html (sin barra tras carpeta).
agregado el autor bolvo, fuente
Déjame saber si funciona
agregado el autor Nick, fuente
Su redirección en el sitio 1 debería redireccionar a la bonita URL. Entonces debería tener una reescritura en el sitio 2 para leer esa URL y enviarla a la página correcta. : mod_rewrite, la reescritura de URL y enlaces “bonitos”, explicó podría ser de alguna ayuda
agregado el autor Nick, fuente