2010-05-04 104 views
0

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

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

这让人们创建短链接到CMS页杂志广告等问题,此方法是,它依赖于访问的.htaccess。我更喜欢一种代码级别的方法,但在我看来,没有重写规则 - 将会调用404错误。有什么办法可以防止这种情况或解决这个问题吗?

+0

您的.htaccess的任何问题?为什么依赖它是一个问题? – Ben 2010-05-04 15:39:17

+0

它是一个问题,如果新的重定向需要动态添加和不正确的语法导致500错误 – robjmills 2010-05-04 15:40:55

回答

4

你可以在你的htaccess中使用rewritemap。它所做的就是引用外部文件/脚本,将传入的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文件传递短URL并返回 - 根据您的逻辑 - 完整的URL

+0

我喜欢这个选项,我认为它仍然落在任何.htaccess规则下降 - 不正确的语法= 500错误? – robjmills 2010-05-04 15:45:33

+0

我不确定,您必须进行测试。你可以尝试返回null,看看规则如何处理。对不起,我有点生疏! – 2010-05-04 16:20:43