在不重定向的情况下实现URL重写,可以使用URL重写模块或者服务器端脚本来处理。下面是两种常见的解决方法的代码示例:
RewriteEngine On
RewriteRule ^article/([0-9]+)/?$ article.php?id=$1 [L]
上述代码将把URL从example.com/article.php?id=123
重写为example.com/article/123
。
// 获取当前URL
$currentUrl = $_SERVER['REQUEST_URI'];
// 定义URL重写规则
$rewriteRules = array(
'/article/([0-9]+)/?' => '/article.php?id=$1',
// 添加更多的重写规则...
);
// 遍历重写规则,查找匹配的规则
$matched = false;
foreach ($rewriteRules as $pattern => $replacement) {
// 使用正则表达式匹配URL
if (preg_match($pattern, $currentUrl, $matches)) {
// 根据匹配结果生成新的URL
$newUrl = preg_replace($pattern, $replacement, $currentUrl);
// 重定向到新的URL
header('Location: ' . $newUrl);
$matched = true;
break;
}
}
// 如果没有匹配的重写规则,则继续原始逻辑
if (!$matched) {
// 继续处理原始逻辑...
}
上述代码将根据定义的重写规则,将URL从example.com/article.php?id=123
重写为example.com/article/123
。
以上是两种常见的解决方法的代码示例,具体使用哪种方法取决于你的服务器环境和需求。