Проблема перенаправления .HTACCESS: index. php До URL-слаг - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь добиться простого перенаправления с http на https и www to без www. Проблема в том, что .htaccess ставит «index. php» перед слагом url, что приводит к ошибке сервера. Вот что происходит:

НЕПРАВИЛЬНОЕ ПОВЕДЕНИЕ:

http://example.com/url-slug -> https://example.com/index.php/url-slug

Желаемое поведение:

http://example.com/url-slug -> https://example.com/url-slug

Примечание. Я хочу, чтобы все запросы перенаправлялись на индекс. php страница в главном каталоге, если только запрошенный файл не существует на сервере. Я хотел бы добиться этого без изменения URL-адреса в браузере, в результате чего сервер обрабатывает sh.

(Цель: www -> non-www & http -> https )

ТЕКУЩИЕ НАСТРОЙКИ .HTACCESS:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Что такое Я делаю не так?

1 Ответ

1 голос
/ 14 января 2020

Ваше перенаправление http to https 301 должно быть наверху, прежде чем другие внутренние правила перезаписи

RewriteEngine On
#http to https
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
#www to non-www
RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule (.*) https://%1%{REQUEST_URI} [NE,L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Обязательно очистите кэш браузера перед проверкой этого изменения.

...