2013-02-19 2 views
0

Я знаю, что есть много подобных вопросов, но я провел более чем за 2 дня исследования его не имели успеха, так что вы моя последняя надежда)Переключение HTTP на HTTPS с использованием mod_rewrite

я написал следующие правила перезаписи:

RewriteCond %{HTTPS} off [NC] 
RewriteCond %{REQUEST_URI} ^((/member/settings)?/orders/?)$ [NC] 
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301] 

RewriteRule \.(gif|jpe?g|png|css|js|eot|woff|ttf|svg)$ - [NC,L] 

RewriteCond %{HTTPS} on [NC] 
RewriteCond %{REQUEST_URI} !^((/member/settings)?/orders/?)$ [NC] 
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301] 

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

Я хочу, чтобы URL-адреса example.com/orders/ и example.com/member/settings/orders/ всегда перенаправлялись на HTTPS, а все остальные принудительно использовали HTTP. Также все запросы должны быть перенаправлены на index.php. И, очевидно, все медиафайлы должны оставаться в том же протоколе, который был запрошен.

Когда я запрашиваю http://example.com/orders/, сначала он перенаправляет на https://example.com/orders/, но затем перенаправляет второй раз на http://example.com/index.php?/orders/. Что на самом деле ожидается, но проблема в том, что «index.php» появляется в адресной строке браузера.

Вопрос в том, как избавиться от 'index.php' в адресной строке браузера?

Любая помощь будет оценена.

ответ

0

затем перенаправляет второй раз http://example.com/index.php?/orders/ .... Я понятия не имею, откуда «index.php» приходит в URL ...

Потому что у вас есть RewriteRule сделать только что:

RewriteRule ^(.*)$ index.php?/$1 [NC,QSA,L] 

Не уверен, что вы пытаетесь выполнить в этом блоке, но попытайтесь избавиться от него.

+0

Спасибо за ваш ответ. Мне нужно, чтобы все запросы выполнялись в index.php, поэтому мне нужно это правило. Проблема заключается в том, что «index.php» появляется в адресной строке браузера. –

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