web-dev-qa-db-fra.com

Comment faire en sorte que nginx serve WordPress sur/blog?

Comment faire pour que WordPress vive à /blog, alors qu'une autre application gère le répertoire racine /, à l'aide de nginx?

J'ai la configuration de sous-domaine ordinaire maintenant, ce qui fonctionne bien.

J'ai lu https://codex.wordpress.org/Nginx et modifié ma configuration en fonction de servir WordPress en tant que sous-répertoire . Dans wp-config.php j'ai

define('WP_HOME','http://example.com/blog');
define('WP_SITEURL','http://example.com/blog');

mais je continue à recevoir des erreurs 404, ou WordPress ne charge pas les fichiers CSS. J'ai aussi essayé

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

404s encore.

Cela doit être une FAQ, mais je n’ai pas défini les termes de recherche (/blog étant si courant que cela n’aide en rien).

Où puis-je trouver un fichier de configuration nginx complet et les paramètres wp-config dotés de WordPress en direct à /blog? Dois-je modifier les paramètres WP de sa base de données MySQL?

1
Dan Dascalescu

Voici ce quegénéralementfonctionne:

  1. Ayez un fichier de configuration nginx pour la configuration du sous-domaine et assurez-vous que http://wordpress.example.com fonctionne.

  2. Dans la configuration par défaut de nginx, utilisez un bloc location pour /blog qui envoie des proxies vers le sous-domaine:

    location /blog {
        rewrite ^/blog(/?.*)$ $1 break;  # remove "/blog"
        proxy_set_header Host wordpress.example.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://wordpress.example.com;
    }
    
  3. Dans wp-config.php, ayez:

    define('WP_HOME','http://idorecall.com/blig');
    define('WP_SITEURL','http://idorecall.com/blig');
    

Je dis que "surtout" fonctionne parce que:

  • Certains éléments de page peuvent ne pas être en cours de chargement. Par exemple, les icônes icomoon utilisées par le thème Avada dans le pied de page ne s'affichent pas.
  • Si vous accédez à votre URL/blog via https, par exemple à http://example.com/blog, mais la configuration du sous-domaine wordpress utilise http, les navigateurs refuseront de charger de nombreuses ressources, avec un avertissement "Contenu mixte". Une solution consiste également à activer HTTPS sur le sous-domaine (StartSSL possède un certificat avec un sous-domaine libre). Un autre, je suppose, est que vous devrez exécuter une recherche de base de données Wordpress et remplacer of http://wordpress.example.com avec http: // example .com/blog .
  • Il y a une requête supplémentaire impliquée avec proxy_passing.
1
Dan Dascalescu