2014-01-30 103 views
0

我遇到以下.htaccess重寫問題。如何使用.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] 

當我和http://ssl.droth-admin.ogicom.pl/kalkulator訪問的網站重定向到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'?第一條規則力''存在 –

回答

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