Как включить https в перезаписи при использовании htaccess для маршрутизации дружественных URL - PullRequest
0 голосов
/ 24 сентября 2018

Я нашел правильный код htaccess для маршрутизации дружественных URL в мой файл index.php, но он не перенаправляет на https, если пользователь вводит:

example.com / sub-folder / rout/

Примечание : эта конкретная перезапись htaccess существует в подпапке домена

Мой htaccess:

 Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

<IfModule mod_rewrite.c>
    RewriteEngine On

    # The basic rewrtie rule.
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,E=X_REWRITE:1,L]

    # Add the proper X_REWRITE server variable for rewritten requests.
    RewriteCond %{ENV:REDIRECT_X_REWRITE} .+
    RewriteRule ^index\.php - [QSA,E=X_REWRITE:1,E=!REDIRECT_X_REWRITE,L]

    # 301 redirect urls that start with request.php
    RewriteCond %{REQUEST_METHOD} GET [NC]
    RewriteCond %{REQUEST_URI} ^(.*?)/index\.php(.*)$
    RewriteRule ^index\.php %1%2 [QSA,R,L]
</IfModule>

Я, честно говоря, недостаточно понимаю код, чтобы понять, что делать, и подумал, что попробую:

RewriteRule ^(.*)$ https://example.com/subfolder/index.php/$1 [QSA,E=X_REWRITE:1,L]

Но это не работает.

Как я могузаставить переписать перейти на https вместо http?

1 Ответ

0 голосов
/ 24 сентября 2018

Вы должны добавить это после любого другого правила перезаписи

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

Это сначала принудительно введет https перед применением других правил.

Таким образом, ваш окончательный код .htaccess становится

 Options +FollowSymLinks
RewriteEngine On

    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

<IfModule mod_rewrite.c>
    RewriteEngine On

    # The basic rewrtie rule.
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,E=X_REWRITE:1,L]

    # Add the proper X_REWRITE server variable for rewritten requests.
    RewriteCond %{ENV:REDIRECT_X_REWRITE} .+
    RewriteRule ^index\.php - [QSA,E=X_REWRITE:1,E=!REDIRECT_X_REWRITE,L]

    # 301 redirect urls that start with request.php
    RewriteCond %{REQUEST_METHOD} GET [NC]
    RewriteCond %{REQUEST_URI} ^(.*?)/index\.php(.*)$
    RewriteRule ^index\.php %1%2 [QSA,R,L]
</IfModule>
...