我正在寻找一个简单的解决方案来重写PHP中的URL。客户希望将它们存储在数据库中,所以我不能使用mod_rewrite。
基本上我正在寻找一个PHP解决方案,使这种情况发生:
^/(.*).html ==> /page.$1.html
这样的PHP代码存在吗?
我不完全确定你的例子是什么意思,因为它实际上会创建一个永无止境的重定向循环。
^/(.*).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");
}
}