我使用php slim框架,这里的url重写是我的主机真实文件结构:
像大多数框架一样重写为index.php
/.htaccess
/assets
/index.php
/phpinfo.php
/robots.txt
/usr
/controller
/model
...
这是我的路由器
$app->get('/backstage', $authenticate(), function () use ($uri, $app) {...});
$app->get('/api', $authenticate(), function () use ($uri, $app) {...});
$app->get('/', function () use ($uri, $app) {...});
$app->get('/article', function () use ($uri, $app) {...});
如何在我的路线中禁用/backstage
,/api
,以及实际文件路径/phpin.php
,/usr
,
并在路由器中接受/
,/article
?
如果我填写路由器路径或真实文件路径,我会感到困惑吗?因为真实的文件路径不存在/article
这是我试过的
User-agent: *
Disallow: /backstage/
Disallow: /phpinfo.php
答案 0 :(得分:1)
首先(假设您使用apache),您需要确保 .htaccess 文件正确地将请求指向路由器文件。
---开始.htaccess片段---
<IfModule mod_rewrite.c>
RewriteEngine On
## direct all requests to Slim router
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ slim-router.php [QSA,L]
</IfModule>
---结束.htaccess片段---
我可能无法正确理解您的问题,但要禁用路线,只需在 slim-router.php 中注释掉添加路线的行。
向 robots.txt 添加条目不会阻止浏览器访问URI,只会询问搜索引擎机器人(即GoogleBot)不索引特定的URI。请参阅robotstxt.org和the robots.txt entry on Wikipedia。
要将路线指向现有文件,您可以使用\Slim\View
类(请参阅the \Slim\View
documentation)。
此示例需要存在名为 templates / article.php 的文件,该文件将输出/article
路由的内容。
使用\Slim\View
类,您还可以将数据发送到模板文件,我也在下面演示了该文件。这只是一个基本示例,请参阅文档以了解更复杂的用法。
// ---开始slim-router.php ---
$app = new \Slim\Slim();
$defview = new \Slim\View();
$defview->setTemplatesDirectory(realpath(__DIR__).'/templates');
$app->get(
'/article',
function () use ($app) {
global $defview;
//show the contents of 'templates/article.php', passing optional data to the template file:
$app->view($defview)->display(
'article.php',
array(
'data_one'=>'one',
'data_two'=>2,
'three'=>'3',
)
);
}
);
// ---结束slim-router.php ---