2016-07-27 11 views
0

Leider habe ich ein Problem, wo ich stecken bleiben.htaccess URL Rewriting: Hinzufügen von Schrägstrich funktioniert nicht

Ich würde hinter jeder URL einen abschließenden Schrägstrich hinzufügen und dann die Version ohne Schrägstrich über 301 an die Variante mit einem Schrägstrich umleiten.

Zuvor habe ich die HTML-Dateierweiterung mit URL-Rewriting erfolgreich entfernt und SSL erzwungen.

Also habe ich den folgenden Code versucht, einen Schrägstrich hinzuzufügen.

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*[^/])$ /$1/ [L,R=301] 

Ich habe diese Lösung gefunden, auf diesem Thema: Htaccess: add/remove trailing slash from URL

Es leider wirkungslos bleibt.

Interessant ist, wenn ich zum Beispiel besucht die folgende URL (mit einem Schrägstrich am Ende):

example.com/imprint/

ich die folgende Meldung: Die angeforderte URL war nicht gefunden /imprint.html/ auf diesem Server.

impressum.html ???

Hier ist meine komplette .htaccess-Datei:

RewriteEngine On 

#Activate and force ssl and redirect from non-www to www# 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC] 

#Removes HTMl-Extension and make URLs clean# 

#example.com/page will display the contents of example.com/page.html 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule ^(.+)$ $1.html [L,QSA] 

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

#Redirect Index Files e.g. /index or /index.html 
RewriteRule ^index\.html$/[R=301,L] 
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L] 

#Adds a trailing slash 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*[^/])$ /$1/ [L,R=301] 

Ich hoffe, Sie können mir helfen. :-)

Antwort

0

Wenn Sie !-f (keine Datei) überprüfen, wird es auch .html Dateien überspringen. Sie können verwenden

RewriteEngine On 

#Activate and force ssl and redirect from non-www to www# 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*?)/?$ https://www.example.com/$1/ [L,R=301] 

#301 from example.com/page.html to example.com/page 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/ 
RewriteRule ^(.+)\.html/?$ /$1/ [R=301,L] 

#Redirect Index Files e.g. /index or /index.html 
RewriteRule ^index\.html/?$/[R=301,L] 

RewriteRule ^(.+)/index\.html/?$ /$1/ [R=301,L,NE,NE] 

#Adds a trailing slash 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*[^/])$ /$1/ [L,R=301,NE] 

#Removes HTMl-Extension and make URLs clean# 

#example.com/page will display the contents of example.com/page.html 
RewriteCond %{REQUEST_FILENAME}.html -f 
RewriteRule ^(.+?)/?$ $1.html [L] 
+0

Vielen Dank, aber das funktioniert nicht. :-(Same Error example.com/imprint sagt: 404 - example.com/imprint.html/ war nicht foud. – hazelnut

+0

Leider funktioniert es nicht für mich. Keine Änderungen und nur ein 404.: < – hazelnut

+0

versuchen Sie meine aktualisierte Antwort Jetzt sagen Sie, welche URL Sie zum Testen verwenden? – anubhava