EDYTOWAĆ
Okazuje się, że szczekałem na złe drzewo, próbując edytować plik .htaccess, ponieważ nginx go nie używa. Najwyraźniej muszę zrobić edycję pliku .conf. Zanim to przeczytałem, 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 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?
EDYCJA KOŃCOWA
Zmieniłem moje permalinki z domyślnego na /% postname% /, a teraz linki w panelu administracyjnym WordPressa dają mi błędy 404 - nie strony WordPress 404, strony nginx 404. Sprawdzam, dlaczego powiedziano mi, że powinienem edytować mój plik .htaccess lub powiedzieć, że WordPress nie może przepisać pliku .htaccess - plik .htaccess jest nieistniejący, a WordPress nie wyświetla żadnych błędów, gdy zmieniam permalinki.
Próbowałem utworzyć pusty plik .htaccess w moim folderze Wordpress, nadając mu uprawnienia 666, zmieniając użytkownika i grupę na www-data, a następnie zmieniając łącza bezpośrednie - to nie działało. Następnie zmieniłem to na to przed zmianą permalinków:
# 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
Kiedy to nie zadziałało, zmieniłem RewriteBase
na, /wordpress/
zanim ponownie zmieniłem permalinki - wciąż nic.
Przeszedłem również do pliku .conf mojej witryny i zmieniłem try_files $uri $uri/ /index.php;
na następujące, ponownie uruchamiając nginx i php5-fpm za każdym razem;
try_files $uri $uri/ /index.php?$query_string;
try_files $uri $uri/ /index.php?q=$request_uri;
try_files $uri $uri/ /index.php?$args;
Korzystam z serwera domowego z nginx. Wszelkie pomysły na temat tego, co się tutaj dzieje?
źródło
Używam Wordpress Multisite z niestandardowym ustawieniem bezpośredniego łącza: /% category% /% postname% /
/etc/nginx/site-available/domain.conf
Na serwerze {
Jeśli Twoim głównym wordpress nie jest katalog główny, ale http://domain.com/wordpress/ :
Jeśli używasz starego wordpressa z blogs.dir, dodaj: location ^ ~ /blogs.dir {internal; alias /var/www/wordpress/wp-content/blogs.dir; access_log off; log_not_found off; wygasa max; }
Sprawdź konfigurację nginx: sudo nginx -t
Przeładuj nginx: usługa sudo przeładuj nginx
Spróbuj także zmienić ustawienia łącza bezpośredniego.
źródło
Musiałem dodać ten fragment kodu zarówno do, jak
/sites-available/your-settings-file
i/sites-enabled/your-settings-file
:Teraz działa dla mnie.
źródło
Musiałem ustawić ścieżkę katalogu głównego do zainstalowanego katalogu wordpressś: root / var / www / html / wp;
Nie podoba mi się to, ponieważ mam więcej aplikacji zainstalowanych na tym komputerze, ale tworzenie większej liczby wirtualnych hostów powinno wystarczyć.
źródło