Changer les permaliens me donne 404 erreurs sur nginx
5 réponses
- votes
-
- 2015-05-21
Ce sont des règles de réécriture Apache
.htaccess
,mais vous avez déclaré que vous étiez sur un serveur Nginx. Nginxn'utilisepas defichier deniveau répertoire detype.htaccess
,et encoremoins lefichier.htaccess
lui-même. Vous devez éditer la configuration du serveur lui-même. Le Codex a unexemple 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; }
Those are Apache
.htaccess
rewrite rules, but you have stated that you are on an Nginx server. Nginx does not use an.htaccess
-like directory level file, much less does it use the.htaccess
file itself.. You need to edit the server configuration itself. The Codex has a detail sample:# 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; }
-
Merci,je voterais sij'avais la réputation.J'ai unpeu demal à l'implémenter dansmonfichier .conf,caril a déjà été considérablementmodifiépar rapport à la valeurpar défaut,mais aumoinsje netripoteplus .htaccess.Thanks, I'd vote this up if I had the reputation. I'm having a little trouble implementing this into my .conf file seeing as it was already changed significantly from the default, but at least I'm not fiddling around with .htaccess any more.
- 0
- 2015-05-21
- ninjachicken1
-
@s_ha_dum,j'ai utilisé cette configurationjusqu'à hier lorsquej'aimis àjour vers wordpress 4.8et maintenantje reçois des 404 sur la structurepersonnalisée despermaliens ....j'aiessayé de le déboguer depuis hiermais rien,desidées??@s_ha_dum, I used thies configuration until yesterday when I updated to wordpress 4.8 and now I am getting 404s on permalinks custom structure....tried debugging it since yesterday but nothing worx, any ideas??
- 0
- 2017-07-04
- Jadeye
-
J'ai dû changer la dernière lignepour lire "fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;"pourtravailler sur Ubuntu 18.04mais celafonctionneet m'a sauvé la raisonI had to change the last line ot read "fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;" to work on Ubuntu 18.04 but it works and saved my sanity
- 0
- 2018-12-17
- Rob
-
- 2016-11-30
J'utilise wordpressmultisite avec unparamètre de lienpermanentpersonnalisé:/% category%/%postname%/
/etc/nginx/site-available/domain.conf
Sur le serveur {
location / { try_files $uri $uri/ /index.php?q=$uri$args; }
Si votre racine wordpressn'estpas la racine Webmais http://domain.com/wordpress/:
location /wordpress/ { try_files $uri $uri/ /wordpress/index.php?q=$uri$args; }
Si vous utilisez un ancien wordpress avecblogs.dir,ajoutez: location ^ ~/blogs.dir { interne; alias/var/www/wordpress/wp-content/blogs.dir; access_log off;log_not_found off;expiremax; }
Vérifiez la configuration denginx: sudonginx -t
Rechargernginx: rechargement du service sudonginx
Essayez également demodifier lesparamètres depermalien.
I'm using wordpress multisite with custom permalink setting: /%category%/%postname%/
/etc/nginx/site-available/domain.conf
On server{
location / { try_files $uri $uri/ /index.php?q=$uri$args; }
If your root wordpress is not the webroot but http://domain.com/wordpress/:
location /wordpress/ { try_files $uri $uri/ /wordpress/index.php?q=$uri$args; }
If you are using old wordpress with blogs.dir, add: location ^~ /blogs.dir { internal; alias /var/www/wordpress/wp-content/blogs.dir; access_log off; log_not_found off; expires max; }
Check the nginx configuration: sudo nginx -t
Reload nginx: sudo service nginx reload
Also try change permalink settings.
-
C'est lameilleure réponsepourtous ceux qui souhaitent déplacermanuellement uneinstallation WordPress vers un sous-répertoire sous unnouveaunom de domaine!MERCI BEAUCOUP!Cela devrait être la réponse acceptée.This is the best answer for anyone who wants to manually move a WordPress installation to a subdirectory under a new domain name! THANK YOU SO MUCH! This should be the accepted answer.
- 4
- 2017-01-24
- specialk1st
-
Le chemin:/etc/nginx/site-available/devrait lire:/etc/nginx/sites-available/The path: /etc/nginx/site-available/ should read: /etc/nginx/sites-available/
- 1
- 2018-02-20
- Grant
-
- 2017-04-06
J'ai dû ajouter cemorceau de code à lafois au
/sites-available/your-settings-file
et au/sites-enabled/your-settings-file
:server { [...] if (!-e $request_filename) { rewrite ^.*$ /index.php last; } [...] }
Celafonctionnepourmoimaintenant.
Had to add this piece of code to both the
/sites-available/your-settings-file
and/sites-enabled/your-settings-file
:server { [...] if (!-e $request_filename) { rewrite ^.*$ /index.php last; } [...] }
It's working for me now.
-
C'est la réponse simple queje cherchais,merciThis is the simple answer I was looking for, thanks
- 1
- 2017-06-28
- ThEBiShOp
-
Cela afonctionné!Pouvez-vousexpliquer ce que celafait?(surtout la "dernière"partie ...)This worked! Could you please explain what it does? (esp the "last" part...)
- 1
- 2018-08-12
- Sidd
-
- 2018-08-07
J'ai dû définir le chemin racine du répertoireinstallé de wordpress¶: racine/var/www/html/wp;
Jen'aimepas ça carj'aiplus d'applicationsinstallées sur cettemachinemais créerplus d'hôtes virtuels devrait suffire.
I had to set the root path to wordpressś installed directory: root /var/www/html/wp;
I dont like it because I have more applications installed on this machine but creating more virtual hosts should be enough.
-
- 2020-05-19
Étape 1. Modifiez/etc/nginx/site-available/example.com
location / { try_files $uri $uri/ /index.php?q=$uri$args; }
étape 2: connexion au serveur étape 3. Exécutez ceci
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
étape 4. Tester la configuration
sudo nginx -t
étape 5. Redémarrez le serveur Nginx
sudo systemctl restart nginx
étape 6. Enregistrez le lienpermanent àpartir dutableau debord d'administration de wordpress ***** Bonnenavigation ****
Plus de détails http://toihid.com/wordpress-permalink-in-nginx-server/
Step 1. Edit /etc/nginx/site-available/example.com
location / { try_files $uri $uri/ /index.php?q=$uri$args; }
step 2 : login to server step 3. Run this
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
step 4. Test configuration
sudo nginx -t
step 5. Restart Nginx server
sudo systemctl restart nginx
step 6. Save the permalink from wordpress admin dashboard ***** Happy browsing ****
More details http://toihid.com/wordpress-permalink-in-nginx-server/
MODIFIER
Il s'avère quej'aboyais lemauvais arbreen essayant demodifier .htaccess,carnginxne l'utilisepas. Ce quej'ai apparemmentbesoin defaireest d'éditermonfichier .conf. Avant de lire ceci,my_app.conf ressemblait à ceci:
Maintenant,cela ressemble à ceci,et celane fonctionnetoujourspas:
Quelqu'un sait-il ce queje fais demal?
FIN DE LA MODIFICATION
J'ai changémespermaliens de la valeurpar défaut à/%postname%/,et maintenant les liens dans lepanneau d'administration de WordPressme donnent 404erreurs -pas WordPress 404pages,nginx 404pages. Je cherchepourquoi celame dit que cela devrait éditermonfichier .htaccess oume dire que WordPressne peutpas réécrire .htaccess - lefichier .htaccessestinexistantet WordPressne donne aucuneerreur lorsqueje change depermalien.
J'aiessayé de créer unfichier .htaccess vierge dansmon dossier wordpress,en lui donnant 666 autorisations,en changeant l'utilisateuret legroupeen www-datapuisen changeant lespermaliens - celan'apasfonctionné. Je l'aiensuite changéen ceci avant de changer lespermaliens:
Quand celan'apasfonctionné,j'ai changé
RewriteBase
en/wordpress/
avant de changer ànouveau lespermaliens -toujours rien.Je suis également allé dans lefichier .conf demon siteet j'ai changé
try_files $uri $uri/ /index.php;
en suivant,en redémarrantnginxet php5-fpm à chaquefois;try_files $uri $uri/ /index.php?$query_string;
try_files $uri $uri/ /index.php?q=$request_uri;
try_files $uri $uri/ /index.php?$args;
J'utilise un serveur domestique avecnginx. Desidées sur ce qui sepasseici?