【发布时间】:2010-06-11 23:13:25
【问题描述】:
我一直在试验轻量级的 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,这正是我想要的。
但是,我必须为 EVERY 站点内链接执行此操作,而且似乎有更好的解决方案不涉及外部创建的 URL。
有没有“更好”的方法来解决这个问题?这是 PHP 框架的“常见”问题吗? (好像是这样)
【问题讨论】:
标签: php frameworks url-rewriting url-routing