2013-04-17 3 views
1

У меня очень простой вопрос, который почему-то я не могу понять, и часы поиска тоже не помогли. Используя файл .htaccess, как я могу перенаправить только /login.php и /index.php в https, а затем перенаправить любую другую страницу только на http? В настоящее время я использую этот код для перенаправления HTTPS, но он перенаправляет на каждой странице:Переадресовывать страницы на https

RewriteCond %{SERVER_PORT} !443 
RewriteRule ^(.*) https://www.ruxim.com/$1 [R] 

спасибо очень много.

ответ

0

Попробуйте что-нибудь в этом роде;

RewriteCond %{SERVER_PORT} !^443$ 
RewriteCond %{REQUEST_FILENAME} =index.php [OR] 
RewriteCond %{REQUEST_FILENAME} =login.php 
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 

Я примечание 100% уверен, что если [OR] выполнит вдруг в середине.

2

Переменная %{SERVER_PORT} зависит от UseCanonicalPhysicalPort в вашей конфигурации. Если он не настроен, значит, вы не сможете сопоставить эту переменную, проще использовать %{HTTPS}.

RewriteCond %{HTTPS} off 
RewriteRule ^/?(login|index)\.php https://www.ruxim.com%{REQUEST_URI} [L,R] 

RewriteCond %{HTTPS} on 
RewriteRule !^/?(login|index)\.php http://www.ruxim.com%{REQUEST_URI} [L,R] 

Если вам не нужен перенаправление на не-https, вам не потребуется второе правило.

0

Для защиты только страниц /login.php и /index.php необходимо применять следующие условия. Другие страницы будут работать по HTTP-пути (незащищенные страницы).

RewriteEngine On 
RewriteBase/
# force https for /login.php and /index.php 
RewriteCond %{HTTPS} =off 
RewriteRule ^(index|login)\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

# don't do anything for images/css/js (leave protocol as is) 
RewriteRule \.(gif|jpe?g|png|css|js)$ - [NC,L] 

# force http for all other URLs 
RewriteCond %{HTTPS} =on 
RewriteCond %{REQUEST_URI} !^/(index|login)\.php$ 
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]