2017-01-25 5 views
-1

Я знаю, что есть несколько сообщений, но я не могу решить другие ответы..htaccess, force HTTPS и удалить index.php

Я пробовал: htaccess force www and remove index.php и .htaccess force HTTPS безрезультатно.

У меня есть index.php, которые выполняют маршрутизаторы. Таким образом, ссылка «/ about» на самом деле управляется из index.php (для удаления в ссылке).

Это мой текущий Htaccess:

<IfModule mod_rewrite.c> 

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

</IfModule> 

Он отлично работает для index.php (в действительности она удаляет index.php и переписать URL).

Он может переписать от example.com до https://www.example.com (и это нормально, я хочу этого!). Но это не переписать от http://www.example.com до https://www.example.com.

Например, ссылка как «http://www.example.com/this/is/a/not/link/secure» остается такой, как есть. Но я хочу перенаправить на "https://www.example.com/this/is/a/not/link/secure"

Большое спасибо.

EDIT: Пер анубхав ответа, это новый весь Htaccess:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule .* index.php [L,QSA] 

RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTP_HOST} ^(?!localhost$|127\.0\.0\.1$)(?:www\.)?(.+)$ [NC] 
RewriteRule^https://www.%1%{REQUEST_URI} [R=301,L,NE] 

RewriteCond %{THE_REQUEST} /index.php [NC] 
RewriteRule ^(.*)index\.php$ /$1/ [R=301,L,NC,NE] 

Теперь переписать http://www.example.com/apiv2/member-card?id=12 в https://www.example.com/www.example.com//?id=12 с двойным доменом ..... То же http://example.com/apiv2/member-card?id=12 получил переписан в https://www.example.com/www.example.com//?id=12

+0

Как насчет использования прокси-сервера? http://stackoverflow.com/questions/16130303/apache-config-how-to-proxypass-http-requests-to-https#16146460 – Hackerman

ответ

0

В первом правиле должно быть указано условие [OR] для перенаправления для обоих условий:

RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTP_HOST} ^(?!localhost$|127\.0\.0\.1$)(?:www\.)?(.+)$ [NC] 
RewriteRule^https://www.%1%{REQUEST_URI} [R=301,L,NE] 

RewriteCond %{THE_REQUEST} /index.php [NC] 
RewriteRule ^(.*)index\.php$ /$1/ [R=301,L,NC,NE] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^index.php [L] 

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

+0

Спасибо. Но с вашими правилами эта ссылка: http://www.example.com/apiv2/member-card?id=12 получить перенаправление на https://www.example.com//?id=12, она удаляет все в middle – sineverba

+0

Нет этого правила не удаляет что-либо из URI, поскольку я использую '% {REQUEST_URI}', который является полным URI. У вас могут быть другие правила в вашем .htaccess, можете ли вы опубликовать свой полный .htaccess – anubhava

+0

спасибо. Весь htaccess в моем первоначальном вопросе. Большое спасибо – sineverba

Смежные вопросы