/ / Mod reescribe la consulta de cadena de la página del sitio web anterior a la nueva: regex, apache, .htaccess, mod-rewrite

Modifique la reescritura de cadenas de la página anterior al nuevo: regex, apache, .htaccess, mod-rewrite

¡He estado luchando con esto durante varias semanas y no puedo entenderlo! Tengo varias páginas antiguas (miles) que tienen una cadena como la siguiente (movimos los carritos de compras)

www.example.com/cgi-bin/commerce.cgi?preadd=action&key=86895 Y

www.example.com/cgi-bin/commerce.cgi?preadd=action&search=action&searchstart=20&keywords=blahblah

Me gustaría redirigir estas páginas a una página de búsqueda en mi nuevo sitio. He usado lo siguiente pero no funciona

RewriteCond% {QUERY_STRING} ^ $ RewriteRule ^ cgi-bin / commerce.cgi? (. *) $ http://www.example.com/newpage? [R = 301, L]

¡Ayúdame para que pueda volver a crecer mi cabello!

Respuestas

1 para la respuesta № 1

Hay dos problemas:

  1. su condicion RewriteCond %{QUERY_STRING} ^$ significa que la cadena de consulta está vacía. Realmente está intentando redirigir si la cadena de consulta está vacía o no.
  2. tu regla busca un ? en la url, pero la cadena de consulta no es parte del texto que puede coincidir en una regla.

Use esta regla más corta, sin RewriteCond (probado en Apache 2.4):

RewriteRule ^/?cgi-bin/commerce.cgi http://www.example.com/newpage? [R=301,L]

Hazme saber si esto funciona para ti. :)


0 para la respuesta № 2

Intenta poner lo siguiente en el archivo htaccess

# This allows you to redirect your entire website to any other domain
Redirect 301 / http://newwebsiteurl.com/