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 MischungOptions
mit „a“+
oder-
mit „ohne“ ist keine gültige Syntax und führt wahrscheinlich zu unerwarteten Ergebnissen.
All
Um und auszudrücken , MultiViews
benötigen Sie zwei Anweisungen:
Options All
Options +MultiViews
All
ist 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