簡體   English   中英

PHP重定向基於同一域內的HTTP_HOST / SERVER_NAME

[英]PHP redirect based on HTTP_HOST/SERVER_NAME within same domain

我正在嘗試使用PHP腳本重定向到基於HTTP_HOST或SERVER_NAME的特定路徑。

我試過這些腳本:

1。

$domain = $_SERVER["SERVER_NAME"];
if (($domain == "example.dk") ||
   ($domain == "www.example.dk")) { 
   header("location: /index.php/da/forside"); 
}
?>

2。

switch ($host) {

        case 'example.dk':
                header("HTTP/1.1 301 Moved Permanently");
                header("Location: http://www.example.dk/index.php/da/forside/");
                exit();

        case 'www.example.dk':
                header("HTTP/1.1 301 Moved Permanently");
                header("Location: http://www.example.dk/index.php/da/forside/");
                exit();



        default:
                header("Location: http://www.example.se");
                exit();

                }
?>

和其他類似的腳本。 頁面永遠加載或瀏覽器返回一些重定向錯誤。

好的,這就是我解決它的方式:

<?php
$domain = $_SERVER["SERVER_NAME"];
$requri = $_SERVER['REQUEST_URI'];
if (($domain == "www.example.dk" && $requri == "/index.php"  ||
   $domain == "example.dk") )  { 
   Header( "HTTP/1.1 301 Moved Permanently" ); 
   header("location: http://www.example.dk/index.php/da/forside"); 
}

else if (($domain == "uk.example.dk" && $requri == "/index.php"  ||
   $domain == "www.uk.example.dk") )  {
   Header( "HTTP/1.1 301 Moved Permanently" );    
   header("location: http://uk.example.dk/index.php/en/uk/home"); 
}

else if (($domain == "www.example.se" && $requri == "/index.php"  ||
   $domain == "example.se") )  { 
   Header( "HTTP/1.1 301 Moved Permanently" ); 
   header("location: http://example.se/index.php/sv/hem"); 
}

?>

看來我需要REQUEST_URI字段,否則它將無法工作。

最常見的重定向錯誤是重定向循環。

  1. 在你的第一個例子后,腳本真的結束了嗎?
  2. $ host來自哪里?

此外,SERVER_NAME通常是apache配置的全局名稱,HTTP_HOST實際上是正確的方法。

HTTP_HOST可能包含端口號,請記住這一點。

那么你的腳本的url是什么,你在哪里重定向到?

一種簡單的調試方法是回顯HTTP_HOST的內容,而不是調用header(),也稱為'echo'。

因為您正在重定向到同一服務器(example.dk)並且您的代碼在循環中一次又一次地執行。

請改用此代碼:

$domain = $_SERVER["SERVER_NAME"];
if (($domain == "example.dk" ||
   $domain == "www.example.dk") && !$_GET['redirected'])  { 
   header("location: /index.php/da/forside?redirected=1"); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM