2014-01-30 2 views
0

다음 .htaccess 다시 쓰기에 문제가 있습니다. 내가 http://ssl.droth-admin.ogicom.pl/kalkulator으로 사이트에 액세스 할 때.htaccess를 사용하여 SSL 및 친숙한 URL을 다시 작성하는 방법

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9\-\,]+)$ index.php?s=$1 
RewriteCond %{HTTPS} off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

그것은 https://ssl.droth-admin.ogicom.pl/kalkulator?s=kalkulator로 리디렉션. https로 직접 사이트에 액세스하면 모든 것이 잘 작동하지만,? s = kalkulator가 보이지 않습니다.

테스트 PHP :

<?php 
//if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) AND $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') 
if (!empty($_SERVER['HTTPS'])) 
{ 
    echo ("SSL active"); 
    echo ("<br />"); 
    echo ("s=".$_GET['s']); 
} 
else 
{ 
    echo ("SSL not active"); 
    echo ("<br />"); 
    echo ("s=".$_GET['s']); 
} 
?> 

이에 대한 모든 솔루션이 있습니까 S = kalkulator는 SSL 리디렉션 후 표시하지? 리디렉션 전환을 시도했지만 작동하지 않았습니다. 규칙의

+1

가능한 중복 (http://stackoverflow.com/questions/4836355/mod-rewrite-include-query -string-when-redirecting) –

+0

링크 된 질문이 정확히 필요한 것이 아닙니다. 여기 리다이렉션 후 s = kalkulator가 추가되고, 나는 그것을 원하지 않는다. – vulg

+0

네, 맞아. 리디렉션 및 쿼리 문자열을 읽고 QSA를 검색했지만 문제가 아닙니다. 어쩌면 첫 번째 규칙에 대해서도'RewriteCond % {HTTPS} off'가 필요할까요? 첫 번째 규칙은's'이 나타나도록합니다. –

답변

1

순서 변경 :

RewriteEngine On 

RewriteCond %{HTTPS} off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^([a-zA-Z0-9,-]+)/?$ index.php?s=$1 [L,QSA] 
[모 \의 _rewrite : 리디렉션 할 때 쿼리 문자열을 포함]의
+0

감사합니다. 그것은 매력처럼 작동했습니다. – vulg

+0

환영합니다. 다행입니다. – anubhava