2011-11-24 60 views
0

好的,所以我需要我的網站automatticly轉發所有請求到服務器的http到https。我使用的PHP沒有真正的問題,但現在,godaddy告訴我,我需要改變我這樣做的方式。我的代碼是否正確,我應該改變如何做這個,有什麼方法更好?先謝謝您的幫助!PHP的https url轉發

<?php 
if ($_SERVER['SERVER_PORT']!=443) 
{ 
$url = "https://". $_SERVER['SERVER_NAME'] . ":443".$_SERVER['REQUEST_URI']; 
header("Location: $url"); 
} 
?> 
+2

如果Godaddy的是告訴你,你需要改變它......沒有他們告訴你怎樣將其更改爲?或者你爲什麼應該? – Quentin

+0

當我問我爲什麼得到我們不支持腳本和只是改變它大聲笑 –

+0

支持可以意味着兩件事之一。 1.提供所需的系統2.在不工作時提供技術援助。既然你說過它確實有效,並且假設你沒有要求他們爲你解決問題......那麼我可以用他們的支持服務或移動主機來升級它(鑑於我聽說過有關godaddy的恐怖故事,我自己動手主持人)。 – Quentin

回答

1

你不不需要包含端口號... https默認端口已經是443。如果您在某個OTHER端口上運行https服務,則只需要明確的端口號。同樣,爲什麼重複重定向?你有2個if()塊做完全相同的事情。

但是,只是測試端口443是不夠的。您可以在任何端口上運行您想要的任何服務。這只是HTTPS通常在443上。但沒有說它必須是。有$_SERVER['HTTPS']明確告訴你,如果HTTPS是否在使用中。

+0

Hey Marc你能給我一個快速的例子,因爲我不熟悉這部分的php。 –

+0

'if(!$ _ SERVER ['HTTPS']){...不在SSL模式下,重定向}' –

0

更好的方法是使用.htaccess和mod_rewrite做重定向。

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 

這會更詳細地解釋here

+0

那麼對於每個網址我都必須做正確的? –

0

這裏描述我會使用的東西:

enter link description here

我不希望依賴於端口443人可以配置正常流量向443或使用其他的HTTPS端口(兩個罕見)。

此外,因爲它是默認的,你可以ommit了 「:443」 ......

+0

HTTP_NOSSL我將如何去這是它的PHP?或者是其他東西。 –

0

您可以使用htaccess的這樣做的:

 
RewriteEngine On 
RewriteCond %{SERVER_PORT} !443 
RewriteRule (.*) https://www.example.com/require-secure/ [R] 

希望它可以幫助

+0

測試端口號是不夠的。 https是USUALLY在443端口,但並不要求它實際上在那個端口上,或者一些OTHER服務在443上運行。 –

0

我使用這個代碼在我的.htaccess文件偉大的工程:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.ch/$1 [R,L]