0

我见过一些网站,其中不同的页面是通过页面 id 访问的,而页面 id 不是通过 get 方法传递的。

所以像这样: http ://www.website.com/sitefolder/pageid/ 我经常在其他网站上看到: http ://www.website.com/index.php?id=12

我知道示例 1 的不同页面存储在一个数据库中,而不是像它建议的那样存储在不同的文件夹中。

通常,如果您有正斜杠,这意味着您正在浏览不同的文件夹..

有人可以解释我如何创建正斜杠页面 id 指示器,而无需为不同的页面创建数百个不同的文件夹吗?

因此,只需“sitefolder”中的一个 php 页面,它通过页面 id 或页面名称或通过 URL 传递的 URL 别名来调整其内容,而不使用 '?id=12' 方法。

4

2 回答 2

1

您可以使用启用的.htaccess规则来完成此操作,如下所示:mod_rewrite

RewriteEngine On
RewriteRule ^/([^/]+)$  index.php?id=$1

这将重写example.com/12example.com/index.php?id=12.

编辑:RegEx,细分:

  • ^匹配行首
  • /匹配斜线
  • ([^/]+)匹配并保存第一组不是斜杠的字符
  • $匹配行尾

RewriteRuleRegEx 的情况下,“行”表示 . 之后的任何内容example.com

于 2013-03-24T12:52:14.950 回答
0

是的,您是对的,通常“/”表示转到下一个文件夹..但有时您也可以根据需要自定义 url 结构....

您需要为此启用 url 重写。这可以使用 .htaccess 规则来完成,例如

RewriteEngine On
RewriteRule ^([^/.]+)(/([^/.]+))?(/([^/.]+))?$ index.php?page=$1 [L,QSA]

或者您可以拥有自己的自定义 mvc,在这种情况下,您可以修改为 url 以处理带有“/”的参数,例如

       $request_url = $_SERVER['REQUEST_URI'];        
       $url         =  str_replace(LOCAL_PATH,"",$request_url);        
       $parameters   = explode("/",$url);

       if($_SERVER['HTTP_HOST']!='localhost')
       {
         $total = count($parameters)-1;
         unset($parameters[0]);        
         unset($parameters[1]);
         unset($parameters[2]); 
       }       
       $slipt = array_chunk($parameters, 2);
       $response = array();
       foreach($slipt as $val)
       {
          if( isset($val[1]) )
            $response[$val[0]] = $val[1];
       }         
      return $response;

这意味着让我们有 url"http://domaintest/controller/method/page/1";

那么这里的页面参数值将是 1

于 2013-03-24T13:00:57.957 回答