Webserver: sprechende URLs?

...komplette Frage anzeigen

2 Antworten

Also für die Index brauchst du gar keinen Rewrite, das funktioniert standardmäßig schon so wie gewünscht (also wenn die Seite "index.html" heißt, dann wird die automatisch angezeigt wenn man "example.com" aufruft).

Für die anderen Unterseiten sollte das reichen: 

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\\\\.]+)/$ $1.html [NC,L]

Damit kannst du dann jede .html Datei als "virtuelles" Verzeichnis aufrufen und musst nicht für jede Datei eine eigene Regel erstellen.

Antwort bewerten Vielen Dank für Deine Bewertung
ProduZa 27.07.2016, 13:16

Danke, soweit war ich auch schon gekommen. Leider war diese Variante nur nicht SEO freundlich, da dadurch eine Menge an Duplicate Content entstand, weil dann alles doppelt und dreifach erreichbar war. Nach einer langen Recherche habe ich mir dann meine rewrites so zusammengebaut, dass ich erst einmal die Dateiendung ausblende, alle URLs mit einem .html am Ende, auf die jeweilige Variante via 301 auf die, ohne Dateiendung weiterleite und anschließend dann auch "index" und "index.html" via 301 auf den Root weiterleite. Jetzt muss ich nur noch wissen, wie ich einen Trailing Slash erzwingen kann. Leider funktionieren auch hier nicht die unzähligen Codes aus den diversen Foren.

0
mastema666 27.07.2016, 14:42
@ProduZa

Also DC erzeugt das nur wenn man auch jeweils beide Versionen verlinkt, die Sumas probieren das ja nicht "auf gut Glück" ob z.B. statt /impressum/ auch /impressum.html funktioniert oder ähnliches ;)

Das mit dem Slash am Ende benutze ich selbst zwar mittlerweile nicht mehr (hat ja keinen Vorteil, außer man findet's halt "hübsch", mir gefällt die Variante ohne eben besser), aber bei einer alten Seite hab ich das damals via PHP gelöst, eben weil ich da halt auch keine funktionierende Lösung nur mit mod_rewrite gefunden hatte, also habe ich dann dort, wo der Slash am Ende sein sollte, per PHP geprüft ob das letzte Zeichen der Request URI eben ein "/" ist und wenn nicht, diesen angehangen und per 301 weitergeleitet.

Mittlerweile mache ich es immer so, dass ich einfach sämtliche Requests auf die index.php leite und das gesamte Routing dann eben per PHP regle, so werden nur genau die URL-Strukturen akzeptiert, die ich haben will, alles andere gibt einen 404 oder wird auf die korrekte Version weitergeleitet. Ist nur für reine HTML Seiten natürlich auch keine Lösung (wobei mans da imho auch gleich komplett statisch bauen kann, also mit echten Verzeichnissen statt virtuellen).

0
So würde ich sagen:

RewriteRule ^example.com/datenschutz/$ example.com/datenschutz.html [NC,L]
Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?