2013-11-13 4 views
1

Я хочу перенаправить на страницу HTTPS/login. Остальные страницы должны быть HTTP.mod_rewrite: HTTPS только для одной страницы

.htaccess файл выглядит следующим образом:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] 
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 

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

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !/login 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) index.php 

Я не знаю, почему он не работает. Когда я перехожу в/login, я был перенаправлен на example.com/index.php Что не так?

ответ

0

Есть ли фактическая (физическая) папка или файл /login в вашем каталоге? Я полагаю, что нет, поэтому ваш запрос /login, наконец, захватывается последним правилом перезаписи и перенаправляется на index.php.

Попробуйте добавить этот RewriteCond %{REQUEST_URI} !/login выше этой линии: RewriteCond %{REQUEST_FILENAME} !-f (или просто обработать запрос на вход иначе)

0

Попробуйте добавить L флаг в последнем правиле есть свой код, как это:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
RewriteRule^http://example.com%{REQUEST_URI} [R=301,L] 

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

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !/login [NC] 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L] 
Смежные вопросы