PHP中的mod_rewrite样式URL替换

时间:2013-05-02 18:54:09

标签: php mod-rewrite

我正在寻找一种在PHP中重写URL的简单解决方案。客户希望将它们存储在数据库中,因此我无法使用mod_rewrite。

基本上我正在寻找一种PHP解决方案来实现这一目标:

^/(.*).html ==> /page.$1.html

这样的PHP代码存在吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

我不完全确定您对您的示例的意思,因为它实际上会创建一个永无止境的重定向循环。

^/(.*).html ==> /page.$1.html ==> /page.page.$1.html ==> /page.page.page.$1.html ==> etc.

我假设您已经说过,您要从数据库中获取这些规则,而这些规则要使用特定的字符串,而不是(.*)

您要做的是匹配您尝试使用$_SERVER['REQUEST_URI']变量搜索的任何内容,然后使用PHP进行重定向。像这样:

foreach ($searches as $string) {
    if (preg_match("@^/$string\.html$@", $_SERVER['REQUEST_URI'])) {
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: http://www.yoursite.com/page.$string.html");
    }
}