2016-05-25 9 views
1

Ich habe ein wenig Probleme mit der .htaccess-Datei meiner Website. Ich möchte sowohl die page.html als auch die Seite/URLs auf die Seite ohne Suffix umleiten lassen. Ich konnte das .html abschalten, aber beim Eingeben der Seite/URL erhalte ich einen internen Serverfehler, egal was ich versuche (Apache 2.4.18).Redirect .html und abschließender Schrägstrich

Hier ist die vollständige .htaccess-Code (ohne eine der Versuche, den Schrägstrich zu entfernen)

Options +FollowSymLinks -Indexes -MultiViews 

RewriteEngine on 
RewriteBase/
RewriteCond %{HTTP_HOST} ^website\.com$ [NC] 
RewriteRule ^(.*)$ http://www.website.com/$1 [R=301,L] 
RewriteCond %{THE_REQUEST} ^.*/index.html 
RewriteRule ^(.*)index.html$ http://www.website.com/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule ^(.+)$ $1.html [L,QSA] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/ 
RewriteRule ^(.*)\.html$ /$1 [R=301,L] 

Was ich möchte, ist zu tun, nur die letzten 6 Zeilen kopieren, die für .html gearbeitet, aber haben es handelt sich stattdessen um den Schrägstrich, aber ich bin nicht sicher, wie das geht oder ob es eine bessere Lösung gibt. Jeder Rat wird sehr geschätzt!

Antwort

1

Um das Slash tun dies zu entfernen:

RewriteEngine on 
RewriteRule (.+)/$ /example/$1 [L,R=301] 

Überschuss Schrägstriche zu entfernen:

RewriteCond %{THE_REQUEST} // 
RewriteRule .* $0 [R] 
+0

Danke Thickguru, das scheint zu funktionieren! Zuvor hatte ich den gleichen oder einen ähnlichen Code unter der .HTML-Weiterleitung ausprobiert, aber wenn ich ihn darüber lege, scheint alles gut zu funktionieren. Sehr geschätzt! –

+0

Eine seltsame Sache ist, dass wenn ich mydomain.com/page/ eintippe, es zu mydomain.com//page umleitet, und wenn ich mydomain.com/page/ erneut eintrage, wird es auf mydomain.com/page umgeleitet und wechselt zwischen die zwei Schrägstrich- und ein Schrägstrich-Versionen jedes Mal. Irgendeine Idee, wenn das reparierbar ist? Keine große Sache, da beide arbeiten, aber wäre schön, es sauber zu halten. –

+0

Hey @ L.Thane, das ist komisch ... du könntest versuchen, einen zusätzlichen Schrägstrich zum rewriterule hinzuzufügen, aber ich bin mir nicht sicher, ob das funktionieren würde. Ich habe meine Antwort mit einer Regel bearbeitet, die überschüssige Schrägstriche entfernen soll. – Lag

0

Haben Sie versucht, so etwas wie

(\.html|\/) 

Ich bin nicht auf meinem Mac gerade jetzt, aber man könnte es mit oder Betreiber zu tun.

Überprüfen Sie es auf https://regex101.com/ mit mehreren URLs.

+0

Dank Tobias, habe ich versucht zu ersetzen das \ .html \ mit, aber es schien alles zu verursachen URLs, die zu einem internen Serverfehler führen. Muss es auch an anderen Orten gehen? –

Verwandte Themen