我的title已经限定了字母和数字的,我想使用title自定义函数作为URL规则,
第一步、我在config/custom.php写了一个函数titleurl
function titleurl($data) {
$title = str_replace(" ", "-", $data['title']);
return "/news/".$title.".html"; // 返回我自己的url规则:
}第二步、在url规则里面填写新标签:
{modname}/{titleurl($data)}.html第三步、在config/rewrite.php,加入代码
// 判断url是否是来自自定义函数
if (CMSURI) {
$myfile = WRITEPATH.'myid/'.md5(urldecode(CMSURI)).'.txt';
if (is_file($myfile)) {
$id = file_get_contents($myfile);
if ($id) {
return [
CMSURI => 'index.php?c=show&id='.$id, // 这里写内容的地址
];
}
}
}第四步、然后更新内容url地址,使url地址生效
第五步、编写伪静态解析规则,因为这是你自己写的函数,所以无法用系统生成的代码了
"([\w]+)\/([\w]+)\.html" => "index.php?s=$1&c=show&title=$2",
为什么我访问https://www.xxxx.cn/news/aaddb17339.html是404
访问https://www.xxxx.cn/news/1.html可以。
是伪静态解析规则写错了吗还是其他原因
function titleurl($data) { $title = str_replace(" ", "-", $data['title']); $url = "/news/".$title.".html"; // 返回我自己的url规则: dr_mkdirs(WRITEPATH.'myid/'); // 创建id缓存存储目录 file_put_contents(WRITEPATH.'myid/'. md5(trim($url, '/')).'.txt', $data['id']); // 将id号存储缓存文件 return $url; }(以上回复内容已被迅睿框架创始人修改)
function titleurl($data) { $title = str_replace(" ", "-", $data['title']); $url = "/news/".$title.".html"; // 返回我自己的url规则: dr_mkdirs(WRITEPATH.'myid/'); // 创建id缓存存储目录 file_put_contents(WRITEPATH.'myid/'. md5(trim($url, '/')).'.txt', $data['id']); // 将id号存储缓存文件 return $url; }