В https:// версии сайта в адресной строке отображается расширение .php, в http:// версии расширения нет, как убрать расширение?

Здравствуйте!

http:// site.ru /page - отображается без расширения
https:// site.ru /page.php - появляется расширение .php (при включенном редиректе с http на https)
Если вручную написать https:// site.ru /page, то показывает расширение
Если отключить редирект, то http и https версии отображаются без расширения - как надо

Подробнее:
Нужно было убрать расширение файла с адресной строки http версии сайта, ssl сертификата тогда не было
Убрал расширение у ссылок в разметке с href="page.php" на href="page". В файл .htaccess добавил следующее:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

Работает всё хорошо.

Через какое-то время подключил ssl сертификат, добавил код для 301 редиректа в самый верх файла .htaccess:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Переадресация работает, но теперь отображается расширение файла.

В файле .htaccess есть только еще одна строчка кода в самом низу, больше ничего нет:
ErrorDocument 404 /404.php

Перепробовал разные готовые комбинации кода для "убирания" расширения и редиректа, но ничего не работает.
В .htaccess совсем не разбираюсь, в интернете ответ не нашёл.

Подскажите, пожалуйста, как решить мою проблему. Спасибо за внимание!

Весь код целиком
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

#ErrorDocument 404 /404.php
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
@Leonard94 Автор вопроса
Мне помог следующий код, который нашёл на просторах интернета:

RewriteEngine on

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]

RewriteCond %{SERVER_PORT} !^443
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ https://centeraudit.by%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP:X-SSL-Emu} !on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@historydev
Острая аллергия на анимешников
Думаю это должно выглядеть как-то так:

RewriteRule .* https://%{SERVER_NAME}%{^(.*)$ $1.php} [R=301,L]
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы