Nginx rewrites kullanarak ".ht." Dosya uzantılarını gizle


15

Ben statik bir site nginx üzerinden hizmet ve amacım aşağıdaki gibi URL'leri değiştirmek:

http://foo.com/bar.html

ile

http://foo.com/bar

Anahtar, sondaki eğik çizgi olmamalıdır. Şu anda konum takma adlarını kullanarak benzer bir şey yapıyorum ama bu her dosya için bir konum bloğu gerektirir ve aynı zamanda nginx dizinleri olarak takma adlara baktığı için bir eğik çizgi ekler çünkü sıkıcıdır:

    location / {
        root    /srv/www/foo/public_html;
        index   index.html;
    }

    location /bar1 {
        alias /srv/www/foo/public_html/;
        index bar1.html;
    }

    location /bar2 {
        alias /srv/www/foo/public_html/;
        index bar2.html;
    }

Ve bunun gibi. Yeniden yazma ile ilgili belgeleri okudum ve ne yapmam gerektiğini söylediklerini sentezleyemiyorum. Apache arka planından gelmiyorum; nginx, web sunucularına ilk adımımdır, bu yüzden HTTP arka planım zayıf olduğu için bariz bir şeyi kaçırdığımdan eminim. Sağlayabileceğiniz herhangi bir yardım için şimdiden teşekkür ederiz.

Yanıtlar:


16

try_files istediğin şey olmalı.

Bunun gibi bir şey:

try_files $uri.html $uri $uri/ =404;

1
Bu, $ uri.html'in 500'e neden olduğu küçük bir istisna dışında çalıştı. "$ {Uri} .html" kullanmak zorunda kaldım.
Doug Stephen

4
Bunu değiştirmek , aynı kaynağa işaret eden try_files $uri.html $uri/ =404;iki uro foobar.com/bar ve foobar.com/bar.html olmayacağından SEO açısından daha iyi olacaktır .
Khaja Minhajuddin

5

@Khaja'dan gelen yorum başına en iyi cevap:

try_files $uri.html $uri/ =404;

Böylece kaynağın yalnızca bir kopyası sunulur (.html uzantısı olmayan). Bağlantı gücünüzü, yinelenen içerik sunan birden çok URL'ye bölmek istemezsiniz. Belgeleri burada bulabilirsiniz .


Bunu denedim. try_files $ uri.html $ uri / = 404; o da, .js vb .css ait kırdı yükleme myurl / index aday göstererek olmadan ana sayfasının yüklenmesini kırdı
aspiringGuru
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.