2 votos

Convertir htaccess a las reglas de reescritura de Nginx

Necesito convertir una redirección .htaccess a Nginx conf.

Aquí está el .htaccess

Redirect 301 /wp-content/plugins/zendesk-for-woocommerce/api/redirect-test1.html /wp-content/plugins/zendesk-for-woocommerce/api/redirect-test2.html

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]
DirectoryIndex index.html index.htm index.php index.shtml

Aquí está la sección correspondiente de mi configuración de Nginx

location / {
   root   /var/www/vhosts/sitename/httpdocs;
   index  index.php index.html index.htm;
   try_files $uri $uri/ /index.php?$args;
}

Según la guía que encontré en línea que lo cambié a:

location / {
    root   /var/www/vhosts/sitename/httpdocs;
    index  index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$args;
    if (!-e $request_filename){
       rewrite ^(.*)$ /$env_base index.php break;
}
}

Me sale el error:

nginx: [emerg] invalid number of arguments in "rewrite" directive in /etc/nginx/conf.d/sitename.conf:19

nginx: configuration file /etc/nginx/nginx.conf test failed

0voto

drookie Puntos 1490

Intente esto:

location / {
    root /var/www/vhosts/sitename/httpdocs;
    index index.php index.html index.htm;
    if (!-e $request_filename){
       rewrite ^/(.*)$ /index.php;
    }
}

break no sólo es redundante, pero también malo, porque si va a hacer nginx terminar los procesos de reescritura y de la tierra de la solicitud dentro de la ubicación actual (que no es consciente sobre el script php de envío).

try_files es un enfoque común cuando un ingeniero que no sabe donde exactamente sus archivos se encuentran, se traduce en nginx en 'mira aquí, mira allí, se ve en todas partes, y nos ayuda a dios para encontrar estos archivos que estamos buscando'. Yo personalmente uso try_files sólo en situaciones en las que un gran conjunto de archivos se traslada entre dos partes de un árbol y archivos realmente podría estar en cualquier de varios lugares, y esto no es conocido decentemente.

Tenga en cuenta que usted también necesita una regexp ubicación *.archivos php, pasando a la fastcgi backend o cualquier otro. Esto está más allá del alcance de su pregunta y esta respuesta; espero que usted sabe a qué me refiero.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: