WordPress

Zmiana linków bezpośrednich daje mi 404 błędy na nginx

  • 21 maja, 2015
  • 4 min read
Zmiana linków bezpośrednich daje mi 404 błędy na nginx


Okazuje się, że wykrzykiwałem niewłaściwe drzewo, próbując edytować .htaccess, ponieważ nginx go nie używa. Najwyraźniej muszę edytować mój plik .conf. Zanim to przeczytałem, plik my_app.conf wyglądał tak:

upstream backend {
    server unix:/u/apps/my_app/tmp/php.sock;
}

server {

    listen 80 default;
    root /u/apps/my_app/www;
    index index.php;

    access_log /u/apps/my_app/logs/access.log;
    error_log /u/apps/my_app/logs/error.log;

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

    # This location block matches anything ending in .php and sends it to
    # our PHP-FPM socket, defined in the upstream block above.
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass backend;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /u/apps/my_app/www$fastcgi_script_name;
        include fastcgi_params;
    }

    # This location block is used to view PHP-FPM stats
    location ~ ^/(php_status|php_ping)$ {
        fastcgi_pass backend;
        fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
        include fastcgi_params;
        allow 127.0.0.1;
        deny all;
    }

    # This location block is used to view nginx stats
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

Teraz wygląda to tak i nadal nie działa:

upstream backend {
    server unix:/u/apps/my_app/tmp/php.sock;
}

server {

    listen 80 default;
    root /u/apps/my_app/www;
    index index.php;

    access_log /u/apps/my_app/logs/access.log;
    error_log /u/apps/my_app/logs/error.log;

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

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

    rewrite /wp-admin$ $scheme://$host$uri/ permanent;

    location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2    |doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
       access_log off; log_not_found off; expires max;
    }

    # Uncomment one of the lines below for the appropriate caching plugin (if used).
    #include global/wordpress-wp-super-cache.conf;
    #include global/wordpress-w3-total-cache.conf;

    # This location block matches anything ending in .php and sends it to
    # our PHP-FPM socket, defined in the upstream block above.
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass backend;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /u/apps/my_app/www$fastcgi_script_name;
        include fastcgi_params;
    }

    # This location block is used to view PHP-FPM stats
    location ~ ^/(php_status|php_ping)$ {
        fastcgi_pass backend;
        fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
        include fastcgi_params;
        allow 127.0.0.1;
        deny all;
    }

    # This location block is used to view nginx stats
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

Czy ktoś wie, co robię źle?

Warto przeczytać!  edytor bloków - Jak edytować meta postów według identyfikatora postu w Gutenbergu

Zmieniłem moje permalinki z domyślnych na /%postname%/, a teraz linki w panelu administracyjnym WordPress dają mi błędy 404 – nie strony WordPress 404, strony nginx 404. Sprawdzanie, dlaczego powiedziano mi, że powinno to edytować mój plik .htaccess lub powiedzieć mi, że WordPress nie może przepisać .htaccess – plik .htaccess nie istnieje, a WordPress nie wyświetla żadnych błędów, gdy zmieniam bezpośrednie łącza.

Próbowałem utworzyć pusty plik .htaccess w moim folderze wordpress, nadając mu uprawnienia 666, zmieniając użytkownika i grupę na dane www, a następnie zmieniając łącza bezpośrednie – to nie działało. Następnie zmieniłem to na to przed zmianą linków bezpośrednich:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Gdy to nie poskutkowało, zmieniłem się RewriteBase Do /wordpress/ przed ponowną zmianą linków bezpośrednich – nadal nic.

Poszedłem także do pliku .conf mojej witryny i zmieniłem try_files $uri $uri/ /index.php; do poniższych, za każdym razem restartując nginx i php5-fpm;

try_files $uri $uri/ /index.php?$query_string;

try_files $uri $uri/ /index.php?q=$request_uri;

try_files $uri $uri/ /index.php?$args;

Prowadzę serwer domowy z nginx. Jakieś pomysły na temat tego, co się tutaj dzieje?

Warto przeczytać!  Najlepszy czas na publikowanie filmów w YouTube w 2024 r


Źródło