我不是一个PHP开发人员,我被要求在现有的PHP网站上执行一些SEO.
我注意到的第一件事是丑陋的URL,所以我想让这些重写为更有用的信息.以下是所有可能的模式:
/index.php?m=ModuleType&categoryID=id
/index.php?m=ModuleType&categoryID=id&productID=id
/index.php?page=PageType
/index.php?page=PageType&detail=yes
基本上我想做的就是将它们转换成类似的东西:
/ModuleType/Category
/ModuleType/Category/ProductName
/Page
/Page
在任何建议或示例之前我没有使用过mod_rewrite会很棒!
谢谢.
解决方法:
mod_rewrite宁愿用来做相反的事情:将/ ModuleType / Category / ProductName的请求内部重写为/index.php?m=ModuleType\u0026amp;categoryID=id\u0026amp;productID=id.在文档中使用新URL是应用程序的工作.
编辑这是一个函数可能如何将参数化URL转换为新的URL的示例:
function url($url, $rules) {
$url = parse_url($url);
parse_str($url['query'], $url['query']);
$argNames = array_keys($url['query']);
foreach ($rules as $rule) {
if ($rule[0] == $url['path'] && array_keys($rule[1]) == $argNames) {
$newUrl = $rule[2];
foreach ($rule[1] as $name => $pattern) {
if (!preg_match('/'.addcslashes($pattern, '/').'/', $url['query'][$name], $match)) {
continue 2;
}
$newUrl = str_replace('<'.$name.'>', $match[0], $newUrl);
}
return $newUrl;
}
}
return $url;
}
$rules = array(
array(
'/index.php',
array('m'=>'.*', 'categoryID'=>'.*', 'productID'=>'.*'),
'/<m>/<categoryID>/<productID>'
)
);
echo '<a href="' . url('/index.php?m=ModuleType&categoryID=categoryID&productID=productID', $rules) . '">/ModuleType/Category/ProductName</a>';
原文地址:https://codeday.me/bug/20190701/1344275.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。