![](/img/trans.png)
[英]What is the difference between HTTP_HOST and SERVER_NAME in PHP?
[英]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字段,否則它將無法工作。
最常見的重定向錯誤是重定向循環。
此外,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.