我一直在尝试轻量级NiceDog PHP路由框架,它的路线是这样的:网站的网址
R('entries/(?<id>\d+)')
->controller('Entries_Controller')
->action('show')
->on('GET')
现在.htaccess
文件设置为做到这一点重定向,像这样:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
我的问题是,当我想要一个URL到某个地方,似乎不可能这样做。
说我要求entries/5
网页,该网页上我想链接到另一个项目entries/6
:
<a href="entries/6">Next Entry</a>
这解析为http://localhost/folder/to/project/entries/5/entries/6
不是我想要的地址。
该href /entries/6
将链接到http://localhost/entries/6
也不是我想要的。
要解决这个问题,我创建了一个函数来处理这个问题:
function url($route) {
return "http://localhost/folder/to/project/$route";
}
所以我现在可以写
<a href="<?= url('entries/6') ?>">Next Entry</a>
现在链接到http://localhost/folder/to/project/entries/6
,这正是我想要的。
但是,我必须这样做,因为每个现场链接,它似乎可以有一个更好的解决方案,不涉及外部创建的URL。
有没有“更好”的方法来解决这个问题?这是PHP框架的“常见”问题吗? (看来这将是)
我试过了。它没有什么不同,因为浏览器是解决URL的问题。 – 2010-06-11 14:49:06