Open nukeador opened 9 years ago
Una pregunta, después de unos meses, ¿seguimos necesitando los redirects? Los motores no habrán cambiado sus datos guardados a donde redirigimos?
Si y no. Hay cosas más recientes y luego hay redirects para cosas como mozillahispano.org y otras URLs que tienen que estar siempre ahí.
Puedes decirme qué hay que redirigir? qué dominios, básicamente
El 19 de agosto de 2015, 12:39, Nukeador notifications@github.com escribió:
Si y no. Hay cosas más recientes y luego hay redirects para cosas como mozillahispano.org y otras URLs que tienen que estar siempre ahí.
— Reply to this email directly or view it on GitHub https://github.com/mozillahispano/administracion-tecnica/issues/18#issuecomment-132535086 .
Guillermo López [willyaranda] http://mozilla-hispano.org http://twitter.com/mozilla_hispano http://facebook.com/mozillahispano Certified Mozillian: https://mozillians.org/willyaranda
En el .htaccess están todos los redirects. Es importante porque del foro viejo al nuevo mandamos a la gente así.
Le pongo P1 a esto porque rompe funcionalidades
@willyaranda estas en esto?, lo que comentaba por telegram el otro día que @nukeador pidió ayuda con esto que debía ser alguien del grupo de administración técnica con acceso al server el que haga esta tarea o no se como tendrían pensado con alguien externo?, lo que pienso que de momento no se está redireccionando nada, por lo que podían es usar la herramienta [1] y pasarle lo que tienen en el .htaccess y luego avisar para ayudar a comprobar cuales han funcionado y cuales no, entonces ir corrigiendo lo que quede mal en caso de que la herramienta funcione, estado mirando un poco en como las convierte y la manera no está muy recomentada por la documentación de nginx [2] pero al menos es algo automatizado que va a resolver el problema si funciona con algunos redirect.
[1]http://www.anilcetin.com/ [2]http://nginx.org/en/docs/http/converting_rewrite_rules.html
No, no estoy con esto
Esto es lo que devuelve el conversor:
if ($http_host ~* "^mozilla-hispano.com$"){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
rewrite ^/(.*)$ http://www.mozilla-hispano.org/$1 permanent;
}
if ($http_host ~* "^www.mozilla-hispano.com$"){
set $rule_1 1$rule_1;
}
if ($rule_1 = "1"){
rewrite ^/(.*)$ http://www.mozilla-hispano.org/$1 permanent;
}
if ($http_host ~* "^mozillahispano.org$"){
set $rule_2 1$rule_2;
}
if ($rule_2 = "1"){
rewrite ^/(.*)$ http://www.mozilla-hispano.org/$1 permanent;
}
if ($http_host ~* "^www.mozillahispano.org$"){
set $rule_3 1$rule_3;
}
if ($rule_3 = "1"){
rewrite ^/(.*)$ http://www.mozilla-hispano.org/$1 permanent;
}
if ($http_host ~* "^mozilla-hispano.org$"){
set $rule_4 1$rule_4;
}
if ($rule_4 = "1"){
rewrite ^/(.*)$ http://www.mozilla-hispano.org/$1 permanent;
}
if ($args ~ "^f=1$"){
set $rule_5 1$rule_5;
}
if ($rule_5 = "1"){
rewrite ^/foro/(.*)$ https://support.mozilla.org/es/questions/new? permanent;
}
if ($args ~ "^f=1&sid=(.*)$"){
set $rule_6 1$rule_6;
}
if ($rule_6 = "1"){
rewrite ^/foro/(.*)$ https://support.mozilla.org/es/questions/new? permanent;
}
if ($args ~ "^f=2$"){
set $rule_7 1$rule_7;
}
if ($rule_7 = "1"){
rewrite ^/foro/(.*)$ https://support.mozilla.org/es/questions/new/desktop? permanent;
}
if ($args ~ "^f=2&sid=(.*)$"){
set $rule_8 1$rule_8;
}
if ($rule_8 = "1"){
rewrite ^/foro/(.*)$ https://support.mozilla.org/es/questions/new/desktop? permanent;
}
if ($args ~ "^f=46$"){
set $rule_9 1$rule_9;
}
if ($rule_9 = "1"){
rewrite ^/foro/(.*)$ https://support.mozilla.org/es/questions/new/mobile? permanent;
}
if ($args ~ "^f=46&sid=(.*)$"){
set $rule_10 1$rule_10;
}
if ($rule_10 = "1"){
rewrite ^/foro/(.*)$ https://support.mozilla.org/es/questions/new/mobile? permanent;
}
if ($args ~ "^f=3$"){
set $rule_11 1$rule_11;
}
if ($rule_11 = "1"){
rewrite ^/foro/(.*)$ https://support.mozilla.org/es/questions/new/thunderbird? permanent;
}
if ($args ~ "^f=3&sid=(.*)$"){
set $rule_12 1$rule_12;
}
if ($rule_12 = "1"){
rewrite ^/foro/(.*)$ https://support.mozilla.org/es/questions/new/thunderbird? permanent;
}
if ($args ~ "^f=47$"){
set $rule_13 1$rule_13;
}
if ($rule_13 = "1"){
rewrite ^/foro/(.*)$ https://support.mozilla.org/es/questions/new/firefox-os? permanent;
}
if ($args ~ "^f=47&sid=(.*)$"){
set $rule_14 1$rule_14;
}
if ($rule_14 = "1"){
rewrite ^/foro/(.*)$ https://support.mozilla.org/es/questions/new/firefox-os? permanent;
}
if ($args ~ "f=6"){
set $rule_15 1$rule_15;
}
if ($rule_15 = "1"){
rewrite ^/foro/(.*)$ https://foro.mozilla-hispano.org/? permanent;
}
if ($args ~ "f=12"){
set $rule_16 1$rule_16;
}
if ($rule_16 = "1"){
rewrite ^/foro/(.*)$ https://foro.mozilla-hispano.org/c/participa-en-el-proyecto? permanent;
}
if ($args ~ "f=16"){
set $rule_17 1$rule_17;
}
if ($rule_17 = "1"){
rewrite ^/foro/(.*)$ https://foro.mozilla-hispano.org/c/discusion-general? permanent;
}
if ($args ~ "f=26"){
set $rule_18 1$rule_18;
}
if ($rule_18 = "1"){
rewrite ^/foro/(.*)$ https://foro.mozilla-hispano.org/c/difusion-eventos? permanent;
}
if ($args ~ "f=27"){
set $rule_19 1$rule_19;
}
if ($rule_19 = "1"){
rewrite ^/foro/(.*)$ https://foro.mozilla-hispano.org/c/difusion-eventos? permanent;
}
if ($args ~ "f=35"){
set $rule_20 1$rule_20;
}
if ($rule_20 = "1"){
rewrite ^/foro/(.*)$ https://foro.mozilla-hispano.org/c/noticias? permanent;
}
if ($args ~ "f=8"){
set $rule_21 1$rule_21;
}
if ($rule_21 = "1"){
rewrite ^/foro/(.*)$ https://foro.mozilla-hispano.org/c/desarrollo-mozilla? permanent;
}
if ($args ~ "f=7"){
set $rule_22 1$rule_22;
}
if ($rule_22 = "1"){
rewrite ^/foro/(.*)$ https://foro.mozilla-hispano.org/c/traduccion? permanent;
}
if ($args ~ "f=25"){
set $rule_23 1$rule_23;
}
if ($rule_23 = "1"){
rewrite ^/foro/(.*)$ https://foro.mozilla-hispano.org/c/labs? permanent;
}
if ($args ~ "f=17"){
set $rule_24 1$rule_24;
}
if ($rule_24 = "1"){
rewrite ^/foro/(.*)$ https://foro.mozilla-hispano.org/c/presentaciones-mentoria? permanent;
}
if ($args ~ "f=14"){
set $rule_25 1$rule_25;
}
if ($rule_25 = "1"){
rewrite ^/foro/(.*)$ https://foro.mozilla-hispano.org/c/miembros? permanent;
}
if ($args ~ "f=50"){
set $rule_26 1$rule_26;
}
if ($rule_26 = "1"){
rewrite ^/foro/(.*)$ https://foro.mozilla-hispano.org/c/discusion-general/firefox-os? permanent;
}
¿Tiene sentido @pochy-ja ?
Haciendo pruebas esto por ejemplo no funciona:
location /foro {
if ($args ~ "f=12"){
rewrite ^/(.*)$ https://foro.mozilla-hispano.org/c/participa-en-el-proyecto? permanent;
}
}
Hola a todos:
No soy experto en reglas de nginx, pero he probado esa configuración (location /foro) en un nginx local y funciona bien. Accedo a http://localhost**/foro?f=12** recibo una redirección HTTP 301 hacia https://foro.mozilla-hispano.org/c/participa-en-el-proyecto y accedo bien a esa nueva dirección.
En logs de nginx se ve la petición: GET /foro?f=12 ¿Cómo se refleja en logs de nginx la petición que no funciona?
Saludos
@jlgetxo el problema es que la petición que tiene que redirigir es:
https://www.mozilla-hispano.org/foro/viewforum.php?f=12
A
https://foro.mozilla-hispano.org/c/participa-en-el-proyecto
Por lo que supongo que la regla está mal y hay que incluir algo más.
OK, se tiene que estar pisando con alguna otra regla. Prueba lo siguiente: 1.- Añadir "^~" delante del prefijo "/foro", así se consigue que si esta regla es la elegida (por prefijo) ya no se comprueben las reglas con expresiones regulares, más complicadas de revisar. location ^~ /foro { if ($args ~ "f=12"){ rewrite ^/(.*)$ https://foro.mozilla-hispano.org/c/participa-en-el-proyecto? permanent; } }
2.- Si con el punto 1 no se soluciona, se puede ver qué regla rewrite se está ejecutando, añade en la configuración de nginx lo siguiente:
error_log logs/error.log notice;
Con estos dos cambios, las peticiones que hagas y se vean afectadas por un rewrite quedarán registradas en el log de errores, con nivel notice. Será algo similar a esto:
[notice] 7477#0: 1 "f=12" matches "f=12", client: 127.0.0.1, server: localhost, request: "GET /foro?f=12 HTTP/1.1", host: "localhost:801" [notice] 7477#0: *1 "^(.)$" matches "/foro", client: 127.0.0.1, server: localhost, request: "GET /foro?f=12 HTTP/1.1", host: "localhost:801" [notice] 7477#0: *1 rewritten redirect: "https://foro.mozilla-hispano.org/c/participa-en-el-proyecto", client: 127.0.0.1, server: localhost, request: "GET /foro?f=12 HTTP/1.1", host: "localhost:801"
Aquí se ve, en dos pasos, que ha entrado por "/foro" con $args="f=12". De esta forma podrás identificar qué regla se está empleando, y ya veríamos qué hacer para evitarlo.
Importante, cuando termines de probarlo vuelve a dejar la configuración de nginx como estaba porque el archivo de errores puede crecer muy rápidamente dependiendo del tráfico del servidor.
@jlgetxo con 1. quedó solucionado, ahora tengo que ver cómo transformar la traducción que me generó esa web en algo limpio.
Hay un problema, si añado los if, se rompe la carga del php.
2015/09/28 01:08:57 [error] 8674#0: *19 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, server: www.mozilla-hispano.org, request: "GET /foro/viewtopic.php?f=2&t=4616 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "www.mozilla-hispano.org"
Como referencia de lo que hay antes en el config:
## PHP5-FPM
location ~ (\.php) {
include /etc/nginx/fastcgi_params;
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass_header Set-Cookie;
fastcgi_pass_header Cookie;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/mozilla-hispano/$fastcgi_script_name;
fastcgi_pass php-fpm;
}
location / {
try_files $uri $uri/ /index.php?q=$uri$args;
}
location @rewriteDoc {
rewrite ^/(.*)$ /documentacion/index.php?title=$1&$args;
}
location /documentacion {
try_files $uri $uri/ @rewriteDoc;
}
location ^~ /foro {
if ($args ~ "f=12"){
rewrite ^/(.*)$ https://foro.mozilla-hispano.org/c/participa-en-el-proyecto? permanent;
}
}
Si añado el ^~ /foro
parece que no aplica el fastcgi al php-fpm.
Con la parte del fcgi de php no te puedo ayudar. Nginx no evalua en el orden en el que aparece en el archivo de config: primero evalua todos los prefijos y "guarda" el de mayor longitud, luego evalua las expresiones regulares (ahora sí en orden) y ejecuta la primera que se cumpla y supere la longitud emparejada por prefijo.
Por lo que he podido probar, la expresión regular ~ (.php) siempre va a tener la mayor prioridad, al emparejarse con el string de mayor longitud y nunca se aplicaría la regla "/foro". Con "^~ /foro" evitamos que se evaluen expresiones regulares y en esta ruta virtual no habrá php, pero fuera de eso sí debería funcionar. Dentro de /foro nos encargamos de dirigir al navegador a donde corresponda en función del argumento.
Si dentro de /foro va a haber otros PHP que tienen que funcionar, se podría repetir la configuración de php dentro de este location. O si no se quiere repetir, dar un nombre a la configuración de PHP, así: location @fastcgi { include /etc/nginx/fastcgi_params; try_files $uri =404; fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass_header Set-Cookie; fastcgi_pass_header Cookie; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/mozilla-hispano/$fastcgi_script_name; fastcgi_pass php-fpm; }
location ~ (.php) { alias @fastcgi; }
location ^~/foro { if ($args ~ "f=12"){ rewrite ^/(.*)$ https://foro.mozilla-hispano.org/c/participa-en-el-proyecto? permanent; } try_files $uri @fastcgi; }
Otra alternativa que se me ocurre es dejar de lado la config de nginx y hacer a mano la página /foro/viewforum.php donde se recoja el parámetro "f" ($_GET["f"] ) y en función del valor saltar a la url que corresponda con http_redirect.
Dado que ya no usamos apache, necesitamos pasar cosas que teníamos en htaccess.
Especialmente las muchas redirecciones que teníamos en el htaccess de mozilla-hispano.org
http://www.anilcetin.com/