我见过一些网站,不同的页面是通过一个页面id,而不是通过get方法传递访问。
就像这样:http://www.website.com/sitefolder/pageid/我经常在其他网站上看到:http://www.website.com/index.php?id=12
我知道例子1的不同页面存储在一个数据库中,而不是在不同的文件夹中,因为它会建议…
一般来说,如果你有一个正斜杠,这意味着你正在浏览不同的文件夹。
有人能告诉我如何创建正斜杠页面id指示器,而不必为不同的页面创建数百个不同的文件夹吗?
所以只是简单的一个php页面在'sitefolder'它通过页面id或页面名称或URL别名通过URL传递其内容而不使用'?id = 12 '方法。
您可以使用启用mod_rewrite
的.htaccess
规则来完成此操作,如下所示:
RewriteEngine On
RewriteRule ^/([^/]+)$ index.php?id=$1
这将重写example.com/12
为example.com/index.php?id=12
。
Edit: RegEx,细分:
-
^
匹配行起始 -
/
匹配斜杠 -
([^/]+)
匹配并保存非斜杠的第一组字符 -
$
匹配行尾
在RewriteRule
RegEx的情况下,"line"表示example.com
之后的任何内容。
是的,你是对的,通常"/"表示进入下一个文件夹。但有时你也可以自定义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";
那么这里page参数的值将是1