2015-12-06 3 views
2

мне нужна помощь с .htaccess что:Htaccess - HTTP на HTTPS и .HTML к/

силы http:// к https://

И

силы .html к /

что я так далеко:

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

ответ

1
Options -MultiViews 

RewriteEngine On 
#1 This line checks if the https is off 
RewriteCond %{HTTPS} ^off$ 
#then, redirect to https 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [NC,L,R] 
#2 this line checks if the request is /file.html 
RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC] 
#then redirect /file.html to /file 
RewriteRule^/%1 [NC,L,R] 

#3 if the request is not for dir 
RewriteCond %{REQUEST_FILENAME} !-d 
#and the request is an existing filename 
RewriteCond %{REQUEST_FILENAME}.html -f 
#then rewrite /file to /file.html 
RewriteRule ^([^/]+)/?$ $1.html [NC,L] 

В приведенном выше примере, первое условие выполняется, когда исходная схема HTTP , а затем правило обрабатывается. HTTP переходит на HTTPS. Первый раунд обработки перезаписи заканчивается здесь.

Во втором раунде mod_rewrite принимает URI /file.html, и правило перенаправляет его в/file, так как/file не существует в каталоге, поэтому нам нужно переписать его в исходный файл # 3. .

+1

Это работает отлично, спасибо! –

1
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example\.com [NC] 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.html [NC,L] 

Я использовал их оба раньше, но я не использовал их вместе. Надеюсь это поможет.

(EDIT) Чтобы на самом деле ЗАСТАВИТЬ расширение выглядеть каталоги:

RewriteBase/
RewriteCond %{THE_REQUEST} \s/+(.+?)\.html[\s?] [NC] 
RewriteRule^/%1/ [R=302,L,NE] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=302,NE,L] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1\.html -f [NC] 
RewriteRule ^(.+?)/?$ $1.html [L] 

http://alexcican.com/post/how-to-remove-php-html-htm-extensions-with-htaccess/ http://www.inmotionhosting.com/support/website/ssl/how-to-force-https-using-the-htaccess-file

+0

Это лучше, к сожалению /example.html не навязывает/пример –

+0

Заставив вы хотите изменить свой адрес от /anything.html к/ничего или просто что-нибудь/или ничего.html будет работать? – spencdev

+0

Я отредактировал, чтобы добавить то, что я предполагаю, что вы хотите. – spencdev

1

Прежде всего, убедитесь, что включен mod-rewrite.
Затем поместите этот код в ваш Htaccess (который должен быть в корневой папке документа)

Options -MultiViews 

RewriteEngine On 
RewriteBase/

# Redirect http urls to https equivalent 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://{HTTP_HOST}/$1 [R=301,L] 

# Redirect existing /path/file.html to /path/file/ 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{THE_REQUEST} \s/(.+?)\.html\s [NC] 
RewriteRule^%1/ [R=301,L] 

# Internally rewrite back /path/file/ to /path/file.html (if existing) 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}/$1\.html -f 
RewriteRule ^(.+)/$ $1.html [L] 

Предупреждение:

  1. Убедитесь служить тот же корень документа, как HTTP для HTTPS (апач ssl block configuration)
  2. Помните, что это создает виртуальные каталоги (путем добавления косой черты ), которые могут испортить ваши ресурсы html (если вы используете относительные пути вместо абсолютных путей). Если да, то использовать абсолютные пути вместо
Смежные вопросы