Regla de reescritura de NGINX para obtener una URL limpia

1 minuto de lectura

avatar de usuario
Joel

¿Cuál sería la regla de reescritura de nginx para redirigir mi estructura de enlace permanente de wordpress desde /%category%/%postname%/ a /%postname%/?

avatar de usuario
pan de centeno

En resumen, debe informar a NGINX que si ese archivo no existe, no arrojar un error 404, sino llamar index.php. WordPress es lo suficientemente inteligente como para analizar la URL como parámetros y mostrar la página correcta.

Agregue este fragmento en el bloque de configuración de su servidor:

location / {
    try_files   $uri $uri/ /index.php?$args;
}

Aquí hay un ejemplo completo de nginx.org:

# Upstream to abstract backend connection(s) for php
upstream php {
        server unix:/tmp/php-cgi.socket;
        server 127.0.0.1:9000;
}

server {
        ## Your website name goes here.
        server_name domain.tld;
        ## Your only path reference.
        root /var/www/wordpress;
        ## This should be in your http block and if it is, it's not needed here.
        index index.php;

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        location / {
                # This is cool because no php is touched for static content.
                # include the "?$args" part so non-default permalinks doesn't break when using query string
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
                #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
                include fastcgi.conf;
                fastcgi_intercept_errors on;
                fastcgi_pass php;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}

  • Tenga en cuenta que los “enlaces permanentes no predeterminados” también incluyen enlaces de categoría. En mi configuración inicial, esta línea decía try_files $uri $uri/ =404; reemplazando =404 con /index.php?$args fue el paso necesario para que mis enlaces de categoría funcionaran nuevamente.

    – rsfinn

    4 sep 2016 a las 22:58

¿Ha sido útil esta solución?