Soru Nginx - bir alt dizindeki wordpress, hangi verilerin geçilmesi gerekiyor?


Çok farklı şeyler denedim. Şu an olduğum nokta şudur:

location ^~ /wordpress {
    alias /var/www/example.com/wordpress;
    index index.php index.html index.htm;
    try_files $uri $uri/ /wordpress/index.php;

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_split_path_info ^(/wordpress)(/.*)$;
        fastcgi_param SCRIPT_FILENAME /var/www/example.com/wordpress/index.php;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

Şu anda, tüm kaynakları söyleyebildiğim kadarıyla (görüntüler, vb.) Doğru şekilde yükleniyor. Ve http://www.example.com/wordpress wordpress yükler, ancak "sayfa bulunamadı" yazan bir sayfa. (Wordpress bunun için kullanılıyor olsa da). Herhangi bir gönderiyi denediğimde aynı sonucu elde ediyorum "sayfa bulunamadı". Bu yüzden problemi biliyorum, wordpress yol ya da başka bir şeyle ilgili verileri elde etmiyor. Bir başka potansiyel problem, eğer koşarsam example.com/wp-admin.php o zaman hala çalışır index.php.

Hangi verilerin geçirilmesi gerekiyor? Burada yanlış olan ne olabilir?


25
2018-05-27 16:04


Menşei




Cevaplar:


Konum takma adınız eşleştiğinden, yalnızca kök kullanmalısınız. Ayrıca değil her şey wordpress afaik üzerinde index.php ile yönlendirilir. Ayrıca, yol bilgisine ihtiyacınız olduğunu bilmiyorsanız, muhtemelen yapmazsınız. Sanırım bir şey istiyorsun:

location @wp {
  rewrite ^/wordpress(.*) /wordpress/index.php?q=$1;
}

location ^~ /wordpress {
    root /var/www/example.com;
    index index.php index.html index.htm;
    try_files $uri $uri/ @wp;

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_pass 127.0.0.1:9000;
    }
}

veya yol bilgisine gerçekten ihtiyacınız varsa (URL'ler /wordpress/index.php/foo/bar gibi görünür):

location ^~ /wordpress {
    root /var/www/example.com;
    index index.php index.html index.htm;
    try_files $uri $uri/ /wordpress/index.php;

    location ~ \.php {
        fastcgi_split_path_info ^(.*\.php)(.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_pass 127.0.0.1:9000;
    }
}

DÜZENLEME: İlk sunucuyu {} başlangıç ​​/ wordpress'i uri'den güncellemek ve kalanını q param olarak geçmek

EDIT2: Adlandırılmış konumlar yalnızca sunucu düzeyinde geçerlidir


41
2018-05-27 17:51



Bunu (ilk kitabını) deniyorum ama 404'teki wordpress sayfasını almaya devam ediyorum. Blog’un farklı bir alandan bir alt dizine sahip bir alana taşınması ile ilgili olabilir. - Matthew
Belki de wordpress'in ilk / wordpress'in sıyrılması gerektiğini düşünüyorum. Bunu yapmak için ilk sunucuyu düzenledim. - kolbyjack
Bu kesin cevap! İlk konumu 'konum' / wordpress 'yerine' location / wordpress 've' root 'yerine' alias 'yerine kullandım. - micred
İlk çözüm ilk kez mükemmel çalıştı - teşekkürler! :) - Bobby DeVeaux
İkinci çözümünüz, WP-API eklenti URL'leri dahil olmak üzere mükemmel şekilde çalışır. Teşekkürler! - Michaël Perrin


Dostum, bu magento kök klasörünün bir alt dizininde bir wordpress blogu için çalışacak!

server {
listen 80;
server_name my-site.co.uk;
rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www
}

server {
listen 80 default;
client_max_body_size 8M;
## SSL directives might go here
server_name www.my-site.co.uk; ## Domain is here twice so server_name_in_redirect will favour the www
root /var/www/my-site/magento;

location / {
    index index.html index.php; ## Allow a static html file to be shown first
   try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler
   expires 30d; ## Assume all files are cachable
}

location  /wordpress {
          index index.php index.html index.htm;
         try_files $uri $uri/ /wordpress/index.php;
         }

## These locations would be hidden by .htaccess normally
location ^~ /app/                { deny all; }
location ^~ /includes/           { deny all; }
location ^~ /lib/                { deny all; }
location ^~ /media/downloadable/ { deny all; }
location ^~ /pkginfo/            { deny all; }
location ^~ /report/config.xml   { deny all; }
location ^~ /var/                { deny all; }

location /var/export/ { ## Allow admins only to view export folder
    auth_basic           "Restricted"; ## Message shown in login window
    auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword
    autoindex            on;
}

location  /. { ## Disable .htaccess and other hidden files
    return 404;
}


location @handler { ## Magento uses a common front handler
    rewrite / /index.php;
}

location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
    rewrite ^(.*.php)/ $1 last;
}

location ~ .php$ { ## Execute PHP scripts
    if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss

    expires        off; ## Do not cache dynamic content
    fastcgi_pass   unix:/var/run/php5-fpm.sock;
    fastcgi_param  HTTPS $fastcgi_https;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param  MAGE_RUN_CODE default; ## Store code is defined in administration > Configuration > Manage Stores
    fastcgi_param  MAGE_RUN_TYPE store;
    include        fastcgi_params; ## See /etc/nginx/fastcgi_params
}

}


12
2018-03-26 15:14



Nginx için kullandığım çekirdek yapılandırma dosyası isterse bu site yapılandırmasına izin verin. - Antony Smith
Benim için çalışıyor, Magento kullanmıyorum ama wordpress için bu blok yararlıdır. Teşekkürler - risnandar
Yaşasın benden! Çok basit ve basit, bu wordpress parçası ve sitem için mükemmel çalıştı. Kodeks.wordress.com adresinde çok karmaşık bir örnek buldum! - Ilian Andreev
Teşekkürler, benim için mükemmel çalıştı. - Altaf Hussain
@AntonySmith Alt klasörde magento ve wordpress çekirdek yapılandırmasını yayınlayabilir misiniz? Ben tam olarak anlayamıyorum ve bu haftadan beri aradık. - 5ud0


Aynı problemim vardı ve bu benim için ne düzeldi?

  1. Siteniz için NGINX yapılandırma dosyasını açın. Sunucu bloğunun içinde, kök dizininizin yolunu ekleyin ve dosyalar için öncelik sırasını ayarlayın:

    root /mnt/www/www.domainname.com;
    index  index.php index.html index.htm;
    
  2. Boş bir konum bloğu oluştur önce diğer tüm konum bloklarınız:

    location /latest {
    # Nothing in here; this is to avoid redirecting for this location
    }
    
  3. Konumunuza / bloğunuza kök dizini iletin ve yeniden yönlendirmeyi ekleyin:

    location / {
    # root   /mnt/www/www.domainname.com;
    index  index.php index.html index.htm;
    rewrite ^/(.*)$ http://www.domainname.com/latest/$1 redirect;
    }
    
  4. Konumunuzun ~ .php $ bloğunun kökü işaret ettiğinden emin olun.

    root /mnt/www/www.domainname.com;
    

Bu benim için düzeltildi.


1
2018-05-01 20:39