Nginx üzerinden çalışan bir WordPress sitesindeki belirli bir dizinden gelen statik dosyalar nasıl sunulur


0

Nginx üzerinde çalışan bir WordPress sitem var. Yapılandırmamda böyle bir konum bloğum var:

location / {
    try_files $uri $uri/ /index.php?$args;
}

Yapmak istediğim, statik içeriklerle dolu özel bir dizine sahip olmak. Bir URL statik dizindeki bir dosyayla eşleşiyorsa, Wordpress içeriği yerine sunulmasını istiyorum.

Önceden dosyaların isimlerini bilmeyeceğim.

Konum bloğumu olarak değiştirmeyi denedim

location / {
    try_files /static/$uri /static/$uri/ $uri $uri/ /index.php?$args;
}

Bu çoğunlukla istediğim şeyi yapar ( staticaltında bir dizin olduğu sürece $document_root), ancak ziyaretçinin gördüğü URL'yi yeniden yazar. Mümkünse bundan kaçınmak istiyorum. Örneğin, https://example.com/catalog.phpyönlendirmekten kaçının https://example.com/static/catalog.php. Sadece Nginx'in içeriğini ziyaretçilerin haberi olmadan statik olarak sunmasını istiyorum.


Özellikle net olmayabilirim.

WordPress içeriğim içinde yer alıyor /srv/www/mysite/htmlve Nginx yapılandırmam aşağı yukarı böyle:

server {
    root /srv/www/mysite/html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
}

/home/dave/staticİsteğe bağlı içeriğe sahip başka bir klasörüm var. Diyelim ki adlı bir dosya var catalog.html. Bir ziyaretçi ziyaret ederse https://example.com/catalog.htmliçeriğin /home/dave/static/catalog.htmlsunulmasını istiyorum . Eşleşen bir statik dosya yoksa, WordPress içeriğine geri dönmek istiyorum.

İşte bu arada denedim başka bir şey:

server {
    root /srv/www/mysite/html;

    location / {
        root /home/dave/static;
        try_files $uri $uri/ @fallback;
    }
    location @fallback {
        try_files $uri $uri/ /index.php?$args;
    }
}

Bu yapılandırma çalışmıyor. Statik içeriğin hiçbirini tanımıyor ve yalnızca WordPress içeriğine hizmet ediyor.


1
URL'nin neye benzediğine bağlı bir konum tanımlamak için Nginx'in konum ifadelerini kullanın. Eg location /static { stuff here; }ve sonra seninlocation / { stuff here; }
Kinnectus

@Kinnectus Bu, ziyaretçinin example.com/static/file adresine gitmesini gerektirmez mi? Ziyaretçinin example.com/dosyasına gitmesini istiyorum, ancak statik dizindeki içeriğin mevcut olması durumunda sunulmasını istiyorum
Dave

Bazı yerlerde /yanlış yer var. Deneyin:try_files /static$uri $uri $uri/ /index.php?$args;
Richard Smith

@RichardSmith Teşekkürler. Soruma ilk eğik çizgiyi eklemeyi unuttum. Benim config de yaptım. Sonrasında staticyanlışlığın yanlış olduğu konusunda haklısın . Ne yazık ki, bu yapılandırma hala fiziksel olarak ziyaretçiyi oradan içerik sunmak yerine / statik dizinine yönlendirir.
Dave,

1
Açıkçası bir location ~ \.php$blok var, ancak staticklasördeki dosyalarla çakışabilecek başka normal ifade konumları var .
Richard Smith
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.