这是否可以在php中创建唯一的URL结构而不是表单操作。 我已经为我的网站创建了事件部分,并且值从数据库中检索并使用sql查询通过id显示。在这里,我想通过标题而不是表单操作ID来获取值 例子
// $row['title'] these values are fetched from database
<a href="eventshow.php?no='. $row['no'] .'">' .$row['title']. '</a>
i want to develop a URL like below instead of above one
<a href="eventshow.php/eventtitle.php>' .$row['title']. '</a>
喜欢WordPress slug而不是page和post id
答案 0 :(得分:0)
这取决于。如果您使用的是Apache,则可以使用.htaccess
重写您的网址并将其指向PHP脚本。
RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt|)
RewriteRule ^(.*)$ /index.php/$1 [L]
这将使用example.com/eventshow/1234
之类的网址,并将其重定向到index.php,然后将服务器变量$_SERVER['PATH_INFO']
设置为eventshow/1234
。从那里你可以解析PATH_INFO来确定应该调用什么函数以及应该传递什么值。 $_SERVER['PATH_INFO']
的最大问题是传递无关斜线/
的租约,因此您需要确保将其删除。
在你的例子中,我会写一些类似的东西:
的index.php
if(!empty(trim($_SERVER['PATH_INFO'],"/"))){
//clean extraneous slashes and explode
$request = array_filter(explode("/",trim($_SERVER['PATH_INFO'],"/"));
}else{
//if no entity specified call index entity, I put this in to handle example.com/ requests.
$request = array("Index");
}
$func = array_shift($request);
$result = call_user_func_array($func, $request);
给定网址example.com/eventshow/1234
,最后一行将调用相当于:
$result = eventshow(1234);
你可能还想在调用之前对$ func进行一些完整性检查,检查函数是否存在,添加一些权限检查和输入过滤器。