2012-03-09 2 views
6

내 웹 사이트의 특정 페이지 4 개를 https 보안 버전으로 리디렉션해야하는 경우에 문제가 있습니다.htaccess 4 개의 특정 페이지를 https로 리디렉션

내가 현재 https://example.com

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com$ [NC] 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ https://example.com/$1 [R] 

에 모두 example.comwww.example.com 리디렉션되는 htaccess로 파일을 가지고 내가 필요한 것은 나는에서 세 번째한다 RewriteCond 라인을 제거한

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page1.php$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page2.php$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page3.php$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page4.php$ [NC] 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ https://example.com/page1.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page2.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page3.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page4.php$1 [R] 

공지 사항 같은 것입니다 위의 코드는 웹 사이트의 모든 페이지에 https 만 표시되도록하고 싶지 않습니다.

이 문제를 어떻게 해결할 수 있습니까?

PS 또한이 줄은 www.example.com과 example.com을 모두 다루고 있습니까?

RewriteCond %{HTTP_HOST} ^(.*\.)*example.com$ [NC] 

나는

^(.*\.)* 

이 함께 할 뭔가가 있으리라 믿고있어?

답변

11
Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/

#redirect www.mydomain.com to mydomain.com (or any other subdomain) 
RewriteCond %{HTTP_HOST} !^mydomain.com$ [NC] 
RewriteRule ^(.*)$ http://mydomain.com/$1 [L,R=301] 

#force https for certain pages  
RewriteCond %{HTTPS} !=on 
RewriteRule ^(page1\.php|page2\.php|page3\.php|page4\.php)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R] 
+0

Gerben, 대단히 감사합니다. –

4

코드를 수정하고 정리했습니다. 당신은 $ DOCUMENT_ROOT에서의 .htaccess 파일에이 코드를 사용할 수 있습니다 회신 anubhava에 대한

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

# HTTPS is not already on 
RewriteCond %{HTTPS} !=on 
# Redirect to HTTPS is URI is page1.php OR page2.php OR page3.php OR page4.php 
RewriteRule ^page[1234]\.php$ https://mydomain.com%{REQUEST_URI} [L,R] 
+0

덕분에, 나는 당신의 답장을 시도하지 않은하지만 TI는 작동 할 것 같습니다. 첫 번째 시도하지 않은 유일한 이유는 page1.php, page2.php 등 배열의 일종을 사용하는 것입니다. 그런 식으로 그 문제는 내가 개별적으로 삽입 할 수 없습니다. 페이지 이름, 예를 들어 내 페이지는 실제로 page1, page2 등으로 불리지 않았습니다. 그리고 불행히도 나는 그것을 바꾸기 위해 재 작성에 대해 충분히 알지 못합니다. 답장을 보내 주셔서 다시 한 번 감사드립니다. –

+1

'[1234]'는 배열이 아니고 1이나 2 또는 3 또는 4 중 하나를 말하기위한 정규 표현식이 아니 었습니다 :'RewriteRule^(page1 | page2 | page3 | page4) \. php $ https : // @ % {HTTP_HOST} % {REQUEST_URI} [L, R]'어쨌든 나는 @Gerben이 먼저 대답하고 오른쪽으로 대답 할 때 옳은 대답을 받아 들였다고 생각한다. – anubhava

관련 문제