2017-09-27 5 views
0

Ich bin sehr vertraut mit, wie .htaccess ehrlich zu sein, aber was ich versuche zu erreichen, dass:Redirect http auf https und entfernen .html von Seiten

  1. alle HTTP-Anfragen umleiten zu https

  2. Alle Seiten entfernen Sie die .html aus der URL

ich diesen Code haben:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

#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] 

aber ich halte einen Fehler in Chrome bekommen:

example.com umgeleitet Sie zu oft.

Irgendwelche Ideen?

+0

Bitte geben Beispiele für die URLs, die Sie anfordern. Werden alle URLs direkt '.html' Dateien zugeordnet, indem einfach' .html' angehängt wird? Deaktivieren Sie 'MultiViews'. dh. 'Optionen -MultiViews' am Anfang der Datei. – MrWhite

+0

Verwandte Cross-Site-Post: https://webmasters.stackexchange.com/questions/109680/htacess-remove-html-from-the-homepage-but-not-from-folders-within-thein-tha – MrWhite

Antwort

0

Versuchen Sie, den folgenden Code:

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://yoursite.com/$1 [L,R] 

#the code above will redirect the entire site into https without www unless the request come with https://www .  

RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.html[\s?/] [NC] 
RewriteRule^/%1%2 [R=302,L,NE] 

#the code above will remove any .HTML. 

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

# you can use the two lines if file without extension not work and you want to map them to .html files and if you want to go the same file .html without extension keep it as it is . 
+1

Sie sind In der HTTP-zu-HTTPS-Weiterleitung fehlt ein erfasstes Muster. – MrWhite

+0

^ist ziemlich genug hier, Vielzahl von Regex –

+1

Sie haben derzeit eine '$ 1' Rückverweis in der _substitution_, die sonst immer leer ist. Also, es sei denn, Sie erfassen das Muster (oder verwenden Sie stattdessen "REQUEST_URI" in der _substitution_), dann werden Sie alles zum Dokumentenstamm umleiten, was sicherlich nicht beabsichtigt ist. – MrWhite

Verwandte Themen