Wie kann ich example.com/about so einrichten, dass example.com/about.html angezeigt wird? (Apache2)

Wie kann ich example.com/about so einrichten, dass example.com/about.html angezeigt wird? (Apache2)

Was ist die beste Option, wenn Sie example.com/about example.com/about.html anzeigen lassen möchten, ohne die URL in /about.html zu ändern? Im Moment versuche ich den folgenden Code, der nur einen 404-Fehler zurückgibt.

RewriteRule ^/about$ https://example.com/about.html [R=301,L]

Bearbeiten #1 zuw3dkIch habe derzeit Multiviews aktiviert, aber ich erhalte immer noch einen 404-Fehler. Hier ist mein aktuelles Setup in VirtualHost

<Directory /var/www/public_html>
    Options All +MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

Antwort1

Anstatt mod_rewrite zu verwenden, umintern umschreibendie Anfrage, Sie könnten stattdessen einfach MultiViews (mod_negotiation) verwenden:

Options +MultiViews

Mit mod_rewrite können Sie komplexere URL-Umschreibungen vornehmen. Wenn Sie jedoch nur die Dateierweiterung entfernen möchten, reicht MultiViews aus – dafür ist es konzipiert.

Wenn Sie eine Anforderung für /about(eine URL/Datei ohne Erweiterung in einem gültigen Verzeichnis) stellen, sucht mod_negotiation bei aktivierten MultiViews nach einer Datei, die dem erwarteten MIME-Typ entspricht, und gibt diese als interne Anforderung zurück.

AKTUALISIEREN:

Options All +MultiViews

Dies ist keine gültige Syntax (ich gehe davon aus, dass Sie Apache 2.2 verwenden müssen, da dies beim Start von Apache 2.4 mit einem Fehler fehlschlagen würde). Wie in derApache-Dokumente:

Warnung
Die Mischung Optionsmit „a“ +oder -mit „ohne“ ist keine gültige Syntax und führt wahrscheinlich zu unerwarteten Ergebnissen.

AllUm und auszudrücken , MultiViewsbenötigen Sie zwei Anweisungen:

Options All
Options +MultiViews

Allist die Standardeinstellung (unter Apache 2.2), daher ist dies möglicherweise nicht erforderlich. Es wäre jedoch besser, nur die benötigten Optionen in einer einzigen Anweisung anzugeben, zum Beispiel:

Options FollowSymLinks Includes MultiViews

Antwort2

kannst du es bitte so versuchen: ich denke, es wird klappen

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^about$ https://example.com/about.html [R=301,L]

Sie können auch die Umleitung verwenden:

Redirect 301 /about http://example.com/about.html
Redirect 301 /any_dir/about http://example.com/about.html

verwandte Informationen