说我有网址/product/view/1
这意味着我有方法,我的产品控制器类:如何停止的人去特定的URL在笨
function view($id)
{
// Do something here
}
如何获得,如果有人去把它优雅地失败/product/view
?
目前我收到两条错误消息,一条说,另一条说我想要的两条,但显然我更愿意提供我自己的一条。
说我有网址/product/view/1
这意味着我有方法,我的产品控制器类:如何停止的人去特定的URL在笨
function view($id)
{
// Do something here
}
如何获得,如果有人去把它优雅地失败/product/view
?
目前我收到两条错误消息,一条说,另一条说我想要的两条,但显然我更愿意提供我自己的一条。
重定向如果您的控制器的产品,方法是查看
...
function view ($id = null) {
// set graciously failing if $id = null to avoid error
// and make happend what you want
....
}
...
不知道任何细节笨,但你总是可以用.htaccess
和mod_rewrite
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/product/view$
RewriteRule ^(.*)$ http://www.example.com/your-error-document [R=301,NC,L]
很好的回答,b做ut我正在寻找一些基于代码的东西,所以我不需要每次需要做类似的事情时都管理服务器端的东西。不过谢谢。 – 2011-03-13 21:07:27
够公平的。一个好处是,用户在点击整个PHP处理之前会被重定向。(并且因此服务器上的负载较少) – konsolenfreddy 2011-03-13 21:45:06
这实际上是一个非常好的观点。但是,不会有任何指向/ products/view页面的链接,因此只有在您想要混淆URL时才可以访问它们。话虽如此,当它发生时可能值得记录,如果发生了很多事情,我将开始使用.htaccess文件。 – 2011-03-14 09:48:46
两种方式,
选项一:给$id
变量的默认值说
function view($id = '')
{
// Do something here and test if it's empty
}
这是历来与可选参数做了函数在PHP
选项二:而不是在URI段传递给函数作为参数,你可以使用URI帮手它或者得到(默认情况下,自动加载)
function view()
{
$id = (int) $this->uri->segment(3);
// Do something here
}
然后,你可以测试ID是否设置,并从那里
function view($id = false)
{
if ($id===false) {
//show error
show_error('your error');
//or redirect
}
// Do something here
}
省长。谢谢。忘记了默认参数。 – 2011-03-13 21:07:46