J'utilise wordpress multisite avec un paramètre de permalien personnalisé :/%category%/%postname%/
/etc/nginx/site-available/domain.conf
Sur le serveur{
location / {
try_files $uri $uri/ /index.php?q=$uri$args;
}
Si votre racine wordpress n'est pas la racine web mais http://domain.com/wordpress/ :
location /wordpress/ {
try_files $uri $uri/ /wordpress/index.php?q=$uri$args;
}
Si vous utilisez l'ancien wordpress avec blogs.dir, ajoutez :location ^~ /blogs.dir {internal;alias /var/www/wordpress/wp-content/blogs.dir;access_log off; log_not_found désactivé ; expire max ;}
Vérifiez la configuration de nginx :sudo nginx -t
Recharger nginx :sudo service nginx recharger
Essayez également de modifier les paramètres de permalien.
Ce sont Apache .htaccess
règles de réécriture, mais vous avez indiqué que vous êtes sur un serveur Nginx. Nginx n'utilise pas de .htaccess
- comme un fichier de niveau répertoire, il utilise encore moins le .htaccess
fichier lui-même. Vous devez modifier la configuration du serveur elle-même. Le Codex a un échantillon détaillé :
# WordPress single blog rules.
# Designed to be included in any server {} block.
# This order might seem weird - this is attempted to match last if rules below fail.
# http://wiki.nginx.org/HttpCoreModule
location / {
try_files $uri $uri/ /index.php?$args;
}
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
# Directives to send expires headers and turn off 404 error logging.
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;
# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
# This is a robust solution for path info security issue and works with "cgi.fix_pathinfo = 1" in /etc/php.ini (default)
include fastcgi.conf;
fastcgi_index index.php;
# fastcgi_intercept_errors on;
fastcgi_pass php;
}
J'ai dû ajouter ce morceau de code à la fois au /sites-available/your-settings-file
et /sites-enabled/your-settings-file
:
server {
[...]
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
[...]
}
Cela fonctionne pour moi maintenant.