kobyakovdima
@kobyakovdima
Любитель экспериментов

Как избавиться от двойной переадресации в htaccess?

Здравствуйте. Имею код в htaccess:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# С http на https
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [L, R=301]

# Со страниц с окончанием .html на без .html и слешем на конце 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1/ [L, R=301]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress


Но в данном варианте идет 2 переадресации, если попадается страница http://site.ru/post.html. Можно ли написать правило, чтобы это происходило за одну переадресацию?

P.S.: Временно пока сделал через php

$currect_url = $_SERVER['SCRIPT_URI'];

if ( strpos($currect_url, 'https') === false ) {
  $currect_url = str_replace("http", 'https', $currect_url);
  $check = true;
}

if ( strpos($currect_url, '.html') !== false ) {
  $currect_url = str_replace(".html", '/', $currect_url);
  $check = true;
}

if( isset($check) ){
  header('HTTP/1.1 301 Moved Permanently');
  header('Location: ' . $currect_url);
  exit();
}
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы