试图获取我的index.php文件的url值

时间:2014-05-26 01:12:37

标签: php .htaccess url url-rewriting

我开始开发一个分页系统,所以我需要在我的网址中获取一些数字,但我有 一个问题。

我有一个项目根文件夹“project”,在我的文件夹中:

  • 1 .htaccess文件
  • 1 index.php文件,即我调用我的getHome()函数,包含正确的页面,是我导入css,javascripts文件等的地方
  • 1个名为“tpl”的文件夹,在里面,我有我的另一个index.php文件,这是我的主页和我的其他php文件(categories.php,contacts.php,...)

要访问我的主页,我使用此网址:localhost / project /

现在我试图通过以下代码获取我在URL中传递的数字:

$page = $url[1];
$page = ($page ? $page : 1);
echo '<h1>'.$page.'</h1>';

问题是,

如果我使用此代码获取我在“categories.php”文件中传递URL的数字,如下所示:“htttp:// localhost / projet / categories / 2” - &gt;它工作正常,我得到“2”的回声,我有我的categories.php文件包括,但有一个问题,我有一些图像我的categories.php文件,如果我使用localhost /项目/类别我有我的图像包括正确,但如果我使用localhost / project / categories / test-1我可以获得值,我传递了我的网址,我的类别页面已包含但我的图像不显示,图像只显示在localhost / project / categories。

如果我使用此代码来获取我在“index.php”文件中传递URL的数字,就像这样“htttp:// localhost / project / 2”我得到了我的页面404错误“tpl / 404.php “,我包含在我的getHome()函数中。

你看到了某种方式,使用我的函数getHome(),我如何获取我在url中传递的数字,使用例如localhost / project / 3,并且正常包含我的index.php文件,并且没有我的404页面tpl / 404.php'包括在内? 以及如何通过我的类别页面解决图像问题?

这是我的函数getHome()

function getHome(){
    $url = $_GET['url'];
    $url = explode('/', $url);
    $url[0] = ($url[0] == NULL ? 'index' : $url[0]);

    if(file_exists('tpl/'.$url[0].'.php'))
        {
          require_once('tpl/'.$url[0].'.php');
        }

    else
        {
              require_once('tpl/404.php');
        }
}

这是我的.htaccess文件:

RewriteEngine OnRewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1

此外,如果我在我的URL中使用索引,如下所示:htttp:// localhost / projet / index / 2,它可以工作,我可以获取我的网址值“2”并且我正确包含了我的主页。但是我试着只使用我的htttp:// localhost / project / 2来获取我传递的值,在这种情况下,我的主页是“2”而不是我的404错误页面。

1 个答案:

答案 0 :(得分:1)

尝试使用array_pop获取网址的最后一个值,然后选中is_numeric

 function getHome(){
   $url = (isset($_GET['url'])) ? $_GET['url'] : $_SERVER['REQUEST_URI'];
   $url = explode('/', $url);
   $template = $url[0] == NULL ? 'index' : $url[0];
   $last = array_pop($url);
   $page = (is_numerica($last)) ? $last : 1;

   if ($template == 'index') {
     return $page;
   }

   if(file_exists("tpl/$template.php")) {
     require_once("tpl/$template.php");
   } else {
     require_once('tpl/404.php');
   }
 }

 $page = getHome(); // $page is used in index.php