2014-10-22 159 views
0

您好尊敬的程序員,404錯誤頁面不工作的錯誤的動態網頁

首先,我的網站最近完成,但程序員拒絕給予支持理由,這是合同的組成部分。但是,我只是想解決這個單一的問題,我可以管理這個網站,直到將來升級。

的網站頁面有以下任何一種格式:

http://example.com/index.php?p=course&cid=xx 
http://example.com/index.php?service&sid=xx 
http://example.com/index.php?p=about-us 

我有一個404錯誤頁面中的位置:

/include/404.php 

,它會顯示爲

http://example.com/index.php?p=404.php 

現在,我想設置的404錯誤頁面時顯示一個錯誤的頁面說: http://example.com/index.php?p=about-us2.php

當輸入一個錯誤的頁面,這是會發生什麼吧:

Warning: include(include/about-us2.php): failed to open stream: No such file or directory in /home/hanpan5/public_html/testing/index.php on line 127 

Warning: include(include/about-us2.php): failed to open stream: No such file or directory in /home/hanpan5/public_html/testing/index.php on line 127 

Warning: include(): Failed opening 'include/about-us2.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/hanpan5/public_html/testing/index.php on line 127 

我在前面加了404碼但是,它影響到託管在http://blog.example.com 上的博客上的頁面。當代碼從.htaccess中刪除時,博客頁面再次正常工作。

我也注意到,有一些代碼在index.php文件:

<div class="body"> 

     <?php include('include/menu.php'); ?> 

     <?php 
     if(!isset($_GET['p']) && @$_GET['p'] == '') 
     { 
     include('include/slider.php'); ?> 

     <?php include('include/services.php'); ?> 

     <?php include('include/strategy.php'); ?> 

     <?php include('include/testimonial.php'); 
     include('include/twitterfeeds.php'); 
     }else 
     { 
      $p = $_GET['p']; 
      include('include/'.$p.'.php'); 
     } 
     ?> 

     <?php include('include/footer.php'); ?> 

    </div> 

反正是有,我可以添加include('include/404.php');到,如果上述聲明所述重定向幫助。或者我能做些什麼來解決這個問題?

熱切期待您的幫助。

非常感謝您提前。

/編輯1後** @ DaveG的第一個答案**/ 你好DaveG,這是我目前的執行你的解決方案:

<div class="body"> 

     <?php 

     include('include/menu.php'); 

     if(isset($_GET['p'])) 
      { 
       $p = $_GET['p']; 
       if(!file_exists('include/'.$p.'.php')) 
       { 
       header('HTTP/1.0 404 Not Found'); 
       include('include/404.php'); 
       exit(); 
       } 
      } 
     else 

     if(!isset($_GET['p']) && @$_GET['p'] == '') 
     { 
     include('include/slider.php'); ?> 

     <?php include('include/services.php'); ?> 

     <?php include('include/strategy.php'); ?> 

     <?php include('include/testimonial.php'); 
     include('include/twitterfeeds.php'); 
     } 
     else 
     if(isset($_GET['p'])) 
     { 
      $p = $_GET['p']; 
      include('include/'.$p.'.php'); 
     } 
     ?> 

     <?php include('include/footer.php'); ?> 

    </div> 

只有索引頁(/index.php)加載完全。

但是,以例如/index.php?p=course&cid=13/index.php?p=abc結尾的文件未完全加載。僅加載菜單(menu.php)和頁腳(footer.php)。

謝謝。

+0

你好@DaveG,請找我上面的編輯。非常感謝您的幫助。 – Ndianabasi 2014-10-22 16:21:11

+0

[編輯後]:問題是你把我的代碼放在錯誤的地方。它應該放置在其他所有內容之前(所以在body-div之前,甚至在所有其他頭部之前)以及'<?php'和'?>'之間。另外,'else'必須在我的代碼後面被刪除!我的代碼是補充的,但其他代碼也應該執行,所以在那裏沒有'else'! – DaveG 2014-10-23 06:32:41

+0

謝謝@DaveG。結果我會回到你身邊。 – Ndianabasi 2014-10-23 06:46:03

回答

0

您可以與file_exists() -function在你的index.php PHP(http://php.net/manual/en/function.file-exists.php),之後,你可以返回404代碼檢查該文件的所有腦幹:

<?php header('HTTP/1.0 404 Not Found'); ?> 

小心:這必須是完成第一個輸出命令,所以首先檢查存在,然後返回標題,然後繼續其餘的代碼!

總數:

if(isset($_GET['p'])) 
{ 
    $p = $_GET['p']; 
    if(!file_exists('include/'.$p.'.php')) 
    { 
    header('HTTP/1.0 404 Not Found'); 
    include('include/404.php'); 
    exit(); 
    } 
} 
+0

你好@DaveG,請參閱我上面的修改。感謝您的幫助。 – Ndianabasi 2014-10-22 18:27:45

+0

謝謝@DaveG。我已將解決方案的實施添加到您的答案中。您可以同行評審,以便其他人看到它。非常感謝你,上帝保佑你。 – Ndianabasi 2014-10-23 07:11:28