网关页面系统

时间:2010-05-04 15:26:53

标签: php apache .htaccess mod-rewrite

我正在尝试改变我们目前在CMS中提供网关页面系统的方式。网关页面的意思是通过.htaccess中的重写规则将不存在的URL映射到页面,例如。

RewriteRule ^foobar$ page.php?mode=bar&method=foo&id=1

这允许人们为杂志广告等创建CMS页面的短链接。此方法的问题在于它依赖于对.htaccess的访问。我更喜欢一种位于代码级别的方法,但我发现 - 如果没有重写规则 - 将调用404错误。有没有办法阻止这种情况或解决这个问题?

1 个答案:

答案 0 :(得分:4)

您可以在htaccess中使用重写地图。这样做是引用一个外部文件/脚本,将传入的uri传递给它并返回重写的uri。

在.htaccess中

RewriteMap shorts prg:/path/to/map.php

在你的php文件map.php

#!/path/to/php
$keyboard = fopen("php://stdin","r"); // get data from stdin
while (1) {
    $line = trim(fgets($keyboard));
    // fetch rewrite for line and echo out
}

php文件传递短网址并根据您的逻辑返回 - 完整网址