2014-09-24 55 views
0

我在localhost上做了一個網站。然後我將它上傳到不同的服務器,沒有問題。但是,這次我嘗試將網絡上傳到另一臺服務器,而在這個網站上,與其他網站上的代碼完全相同的代碼無法正常工作。我簡化了這個錯誤,並且必須符合下列其中一條。上傳我的網站時出現PHP問題?

如果我在我的網站上輸入網址,我的代碼必須自動將默認語言添加到URL(即es),如果尚未指定此語言。例如,如果我輸入mydomain.com,則必須將其轉換爲mydomain.com/es

這裏的代碼(注:郎鹹平在htaccess的聲明,並在URL推出的第一個參數的名稱,在這種情況下,語言):

的index.php代碼:

<?php 
    $idiomas = array("ES", "GL", "EN"); 
    if (!(isset($_GET['lang']) && $_GET['lang'] == "admin")) { 
     require_once("pages/language.php"); 
    } 
?> 

language.php CODE:

<?php 
    if (isset($_GET['lang']) && $_GET['lang'] != "") { 
     switch ($_GET['lang']) { 
      case strtolower($idiomas[0]): 
      case strtolower($idiomas[1]): 
      case strtolower($idiomas[2]): 
      case 'admin': 
       $_SESSION['lang'] = $_GET['lang']; 
       break; 
      default: { 
       header("Location: ".ROOT); 
      } 
     } 
    } 
    else { 
     if (!isset($_SESSION['lang']) || $_SESSION['lang'] == "") { 
      echo '<meta http-equiv="refresh" content="0; url='.strtolower($idiomas[0]).'">'; 
      exit; 
     } 
    } 
?> 

現在,發生了什麼事情是:你輸入mydomain.com和這一個是轉換爲mydomain.com/es上的URL,但它開始做到這一點每毫秒,永久重新加載和重新加載頁面。我意識到當mydomain.com/es已經在URL中時,language.php的第一個條件如果沒有保留,那就應該保留。

我不知道爲什麼這個代碼總是在不同的服務器上工作,而不是在這個服務器上。有什麼想法嗎?先謝謝你。

+1

是否啓用國防部重寫包括在Apache? – 2014-09-24 09:44:00

+0

@ThomasHambach你是對的!該服務器沒有啓用mod_rewrite。 – forvas 2014-09-24 10:55:09

回答

0

根據您的擔心,網址會轉換爲其他網址,這可能是您的問題,原因是$ _GET ['lang']不會存在於其他轉換的網址上。

請檢查您的代碼目錄中的.htaccess文件。

0

會話處理存在問題 您應該從session_start()開始; 也必須設置在「郎」變量時重定向... 另一種選擇是在網址的結尾?LANG =參數(GET方法)

echo '<meta http-equiv="refresh" content="0; url=/'.strtolower($idiomas[0]).'?lang='.$idiomas[0].'">';