2014-01-08 31 views
0

想知道如何在主頁面和其子頁面之間創建正斜槓。PHP - 主頁和子頁面之間的正斜槓

當前結果 mywebsite.com/page1-subpage.php

期望的結果: mywebsite.com/page1/subpage.php

當試圖在該位用斜線代碼給我一個錯誤信息:「/".$page->url

的完整代碼如下

if($page->parent > 1){ 
    $l = getParentById($page->parent,$pages); 
    $page->url = remove_accents($l->title)."-".$page->url; 
    } 

當使用原始的「_」或「 - 」時,一切正常。

有人可以幫我嗎?我想這是一個很容易的問題。提前致謝!


EDIT 附加代碼。希望這是有道理的。

if(!$page->title){ 
    PError("Please fill in a page title."); 
    } 
    $page->type = sprintf("%s",Utilities::scrub($_POST['type'])); 
    $page->url = sprintf("%s",Utilities::scrub($_POST['url'])); 


if($page->type=='page'){ 
    $page->url = remove_accents($page->title).".php"; 


if($page->parent > 1){ 
    $l = getParentById($page->parent,$pages); 
    $page->url = remove_accents($l->title)."/".$page->url; 
    } 
//print_r($page); 
//exit; 

if((!$page->id)&&(file_exists("../".$page->url))){ 
    PError("Page title already exists. Please choose another title."); 
    exit(); 
    } 
} 

if($page->type == 'link'){ 

if(!$page->url){ 
    PError("Fill in a URL."); 
    } 

} 

$page->display = sprintf("%s",Utilities::scrub($_POST['display'])); 

$new=0; 
if(!$page->id){ 
    $page->id = uniqid(); 
    $new=1; 
    } 

if(SaveHeaderImage($page->id)){ 
    $page->headerimage = sprintf("%s",Utilities::scrub($_FILES['headerimage']['name'])); 
    } 

if($new){ 
    array_push($pages,$page); 
} 
else{ 

    foreach($pages as &$l){ 
     if($l->id == $page->id){ 
      $l = $page; 
      break; 
      } 
     unset($l); 
    } 

} 

編輯2:功能

function remove_accents($string) 
{ 

$table = array(
    'Š' => 'S', 'š' => 's', 'Ð' => 'Dj', 'ð' => 'dj', 'Ž' => 'Z', 'ž' => 'z', '?' => 'C', '?' => 'c', '?' => 'C', '?' => 'c', 
    'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'A', 'Ç' => 'C', 'È' => 'E', 'É' => 'e', 
    'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ñ' => 'n', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 
    'Õ' => 'O', 'Ö' => 'O', 'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ý' => 'Y', 'Þ' => 'B', 'ß' => 'Ss', 
    'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'a', 'ç' => 'c', 'è' => 'e', 'é' => 'e', 
    'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ð' => 'o', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 
    'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ý' => 'y', 'ý' => 'y', 'þ' => 'b', 
    'ÿ' => 'y', '?' => 'R', '?' => '?', 
); 

$string = strtr($string, $table); 
$string = strtolower($string); 
$string = preg_replace('#[^a-z0-9/]+#', '-', $string); 
$string = trim($string, '-');  
return $string; 
} 
+0

這應該起作用,你的代碼必須存在其他問題。 – Revent

+0

你收到什麼錯誤信息? – Braunson

+0

@Revent感謝您的回覆。我收到了內部服務器錯誤。奇怪的是,當使用破折號「 - 」或下劃線「_」時,一切正常。 –

回答

0

也許是因爲,在URL中的斜線意味着有一個目錄 - 這是「第1頁」你的情況 - 和網絡服務器正在嘗試查找該目錄內的子頁面。

如果是這種情況,您有兩種選擇: 1.創建該目錄「page1」並將代碼放入其中並嘗試訪問子頁面。 2.或者通過添加重寫規則來將所有請求重定向到主頁面來配置您的Web服務器。

+0

謝謝穆罕默德。好的,聽起來很合邏輯我想沒有標準/通用重寫規則來重定向頁面到基於正斜槓映射的子頁面結構? –

相關問題