Schreiben Sie alle HTML-Erweiterungen neu und entfernen Sie den Index in Nginx

Schreiben Sie alle HTML-Erweiterungen neu und entfernen Sie den Index in Nginx

Wie entferne ich alle .html-Erweiterungen sowie alle Vorkommen von index.html aus einer URL-Zeichenfolge in Nginx?

http://www.mysite/index.htmlbis bis bis http://www.mysite http://www.mysite/articles/index.htmlbishttp://www.mysite/articles http://www.mysite/contact.htmlhttp://www.mysite/contact http://www.mysite/foo/bar/index.htmlhttp://www.mysite/foo/bar

BEARBEITEN:Hier ist meine Conf-Datei:

Server {

    listen 80;

    server_name staging.mysite.com;
    root /var/www/staging.mysite.com;
    index  index.html index.htm;

    access_log /var/log/nginx/staging.mysite.com.log spiegle;


    #error_page 404         /404.html;
    #error_page 500 503     /500.html;


    rewrite ^(.*/)index\.html$ $1;
    rewrite ^(/.+)\.html$ $1;

    rewrite ^(.*/)index\.html$ $scheme://$host$1 permanent;
    rewrite ^(/.+)\.html$ $scheme://$host$1 permanent;

    location / {
            rewrite ^/about-us /about permanent                                                                                      
            rewrite ^/contact-us /contact permanent;  

            try_files  $uri.html  $uri/ /index.html;
    }

}

Antwort1

Als Neufassung (übergeben Sie die entfernte URL an das Dateisystem/Backend, ohne die dem Client angezeigte URL zu ändern):

rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;

AlternativeSie können eine 301-Umleitung durchführen (Client stellt neue Anfrage):

rewrite ^(.*/)index\.html$ $scheme://$host$1 permanent;
rewrite ^(/.+)\.html$ $scheme://$host$1 permanent;

Antwort2

Die akzeptierte Antwort schien bei mir nicht zu funktionieren. Ich bin ein Apache-Typ, der gerade wechselt, daher funktioniert dies möglicherweise nicht unter allen Umständen zu 100 %, aber dies schien auf meiner Site zu funktionieren (statische HTML-Seiten, nur ein Test):

index index.html;
error_page 404 404.html;
rewrite ^(/.+)\.html$ $1;
try_files $uri.html $uri/ =404;

So wird es möglich:

  • URL => Datei, auf die zugegriffen wird
  • domain.com/ => index.html
  • domain.com/irgendeineseite => irgendeineseite.html
  • domain.com/arandompage => 404.html

Hoffentlich hilft dies anderen verwirrten ehemaligen Apacheisten weiter.

verwandte Informationen