EDITAR
Acontece que eu estava latindo na árvore errada tentando editar o .htaccess, pois o nginx não o usa. Aparentemente, o que eu preciso fazer é editar meu arquivo .conf. Antes de ler isso, o my_app.conf era assim:
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;
}
}
Agora, fica assim, e ainda não está funcionando:
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;
}
}
Alguém sabe o que estou fazendo de errado?
EDIT FIM
Alterei meus permalinks do padrão para /% postname% /, e agora os links no painel de administração do WordPress me dão erros 404 - não páginas do WordPress 404, páginas do nginx 404. Pesquisando por que isso me foi dito que isso deveria estar editando meu arquivo .htaccess ou me dizendo que o WordPress não pode reescrever .htaccess - o arquivo .htaccess é inexistente e o WordPress não está dando nenhum erro quando altero os links permanentes.
Tentei criar um arquivo .htaccess em branco na minha pasta do wordpress, concedendo-lhe 666 permissões, alterando o usuário e o grupo para www-data e, em seguida, alterando os links permanentes - que não funcionaram. Eu mudei para isso antes de alterar os links permanentes:
# 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
Quando isso não funcionou, mudei RewriteBase
para /wordpress/
antes de alterar os links permanentes novamente - ainda nada.
Também fui ao arquivo .conf do meu site e mudei try_files $uri $uri/ /index.php;
para o seguinte, reiniciando o nginx e o php5-fpm a cada vez;
try_files $uri $uri/ /index.php?$query_string;
try_files $uri $uri/ /index.php?q=$request_uri;
try_files $uri $uri/ /index.php?$args;
Estou executando um servidor doméstico com nginx. Alguma idéia sobre o que está acontecendo aqui?
fonte
Estou usando o wordpress multisite com a configuração personalizada de link permanente: /% category% /% postname% /
/etc/nginx/site-available/domain.conf
No servidor {
Se o seu wordpress raiz não for o webroot, mas http://domain.com/wordpress/ :
Se você estiver usando o wordpress antigo com blogs.dir, adicione: location ^ ~ /blogs.dir {internal; alias /var/www/wordpress/wp-content/blogs.dir; access_log off; log_not_found off; expira no máximo; }
Verifique a configuração do nginx: sudo nginx -t
Recarregar nginx: serviço sudo recarregar nginx
Tente também alterar as configurações do link permanente.
fonte
Tinha que adicionar esse trecho de código ao
/sites-available/your-settings-file
e/sites-enabled/your-settings-file
:Está funcionando para mim agora.
fonte
Eu tive que definir o caminho raiz para o diretório instalado do wordpress: root / var / www / html / wp;
Não gosto porque tenho mais aplicativos instalados nesta máquina, mas criar mais hosts virtuais deve ser suficiente.
fonte