我想改变我们目前在CMS内提供网关页面系统的方式。网关页面的意思是通过.htaccess中的重写规则将不存在的URL映射到页面,例如,网关页面系统
RewriteRule ^foobar$ page.php?mode=bar&method=foo&id=1
这让人们创建短链接到CMS页杂志广告等问题,此方法是,它依赖于访问的.htaccess。我更喜欢一种代码级别的方法,但在我看来,没有重写规则 - 将会调用404错误。有什么办法可以防止这种情况或解决这个问题吗?
我想改变我们目前在CMS内提供网关页面系统的方式。网关页面的意思是通过.htaccess中的重写规则将不存在的URL映射到页面,例如,网关页面系统
RewriteRule ^foobar$ page.php?mode=bar&method=foo&id=1
这让人们创建短链接到CMS页杂志广告等问题,此方法是,它依赖于访问的.htaccess。我更喜欢一种代码级别的方法,但在我看来,没有重写规则 - 将会调用404错误。有什么办法可以防止这种情况或解决这个问题吗?
你可以在你的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
我喜欢这个选项,我认为它仍然落在任何.htaccess规则下降 - 不正确的语法= 500错误? – robjmills 2010-05-04 15:45:33
我不确定,您必须进行测试。你可以尝试返回null,看看规则如何处理。对不起,我有点生疏! – 2010-05-04 16:20:43
您的.htaccess的任何问题?为什么依赖它是一个问题? – Ben 2010-05-04 15:39:17
它是一个问题,如果新的重定向需要动态添加和不正确的语法导致500错误 – robjmills 2010-05-04 15:40:55