.htaccess强制SSL并删除文件扩展名

时间:2016-08-23 11:34:42

标签: apache .htaccess ssl

我正在尝试使用.htaccess重写我的网址基本上我想强制所有连接到https://并删除任何尾随的.html扩展名。

这是我到目前为止所拥有的,

    RewriteEngine On

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

RewriteCond %{HTTP_HOST} ^www.%{HTTP_HOST}$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]


RewriteRule ^([^\.]+)$ $1.html [NC,L]

这会强制用户使用https,但是它不会从我错误的URL中删除.html吗?

1 个答案:

答案 0 :(得分:0)

您需要一个额外的规则才能从网址中删除.html。此外,您可以将该规则与wwwhttps规则合并为一个避免重定向301重定向

RewriteEngine On

RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{THE_REQUEST} \.html[\s?] [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^(.*?)(?:\.html)?$ https://%1/$1 [R=301,L,NC,NE]

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