404错误的配置问题,对不存在url返回404页面

VikingZ 发布于 2013/06/17 17:41
阅读 2K+
收藏 1

@JFinal 你好,想跟你请教个问题:

比如网校网这样的url  http://www.wangxiaowang.com/kecheng  

在后面随便再加什么,比如 http://www.wangxiaowang.com/kecheng/tyu   都会被认为是 kecheng 方法的参数,然后返回正常的结果页面。但其实这个url是不存在的,jFinal并不会返回404。

有什么办法让jFinal能对所有不存在的url都返回404呢?

还有,在config里配置了error代码

me.setError404View("/common/error.html");
me.setError500View("/common/error.html");

以后,如果是404或500,不会经过我添加的为传递session的拦截器,导致页面报错 session未定义,这个问题有办法解决么?

加载中
0
whaon
whaon

对于第一个问题,我也发现了

你可以这样来解决:

this.getPara()
取得那个参数,如果不为空则返回404,说白了就是对这个参数进行分析


whaon
whaon
用拦截器
VikingZ
VikingZ
那就得在每个不用参数的方法里面加这个判断了,这样全局配置的error其实就没有用了
0
不正常的物种
不正常的物种

web.xml 我工程的配置 可以实现

<error-page>
        <error-code>404</error-code>
        <location>/resource/404.html</location>
    </error-page>

VikingZ
VikingZ
嗯,如果jFinal返回了404就好办,但现在的问题是它不返回404,因为url能匹配到方法,后面的被当成是无用的参数,而不是错误的url
0
whaon
whaon

你要用session的话,应该跳到jsp中把

this.setAttr()设置的是request

this.setSessionAttr设置的是session

VikingZ
VikingZ
session用的之前别人发的代码,用拦截器解决了,但好像全局配置的404不经过拦截器就直接跳转到404页面了
0
JFinal
JFinal

    JFinal 提供了 NoUrlPara 这个拦截器来支持楼主的需求,只需要这样: @Before(NoUrlPara.class)

    如果 me.setError404View 还搞不定需求,可以考虑扩展 IErrorRenderFactory来灵活实现各种异常处理需求

whaon
whaon
看了下源码,这就是1L说的方法,哈哈
0
王瑞平
王瑞平

这肯定设计到JFinal路由的配置

@JFinal

0
JFinal
JFinal
再补充一下,很多网站与 jfinal 处理的方式是一样的,一般来说链接都是点击进入的,很少有直接输入的,例如 oschina的新闻频道链接:  http://www.oschina.net/news/abc
JFinal
JFinal
回复 @VikingZ : 使用 @Before(NoUrlPara.class) 搞定
VikingZ
VikingZ
这个我知道,但对不存在的url处理不好,会被人恶意做出很多不同url但内容相同的页面链接,搜索引擎抓取后,如果判定是作弊,那对网站的影响就很大了
0
VikingZ
VikingZ

如果下面这样的链接让搜索引擎全部抓取到:
http://www.wangxiaowang.com/kecheng/tyu
http://www.wangxiaowang.com/kecheng/abc
http://www.wangxiaowang.com/kecheng/qwe
http://www.wangxiaowang.com/kecheng/lkj
... ...
假如被搜索引擎认为是作弊,那 http://www.wangxiaowang.com/kecheng/ 页面甚至是整个域名下的页面的排名可能就会受到影响,被降权等惩罚

JFinal
JFinal
这样的链接在本域名下是不会有的,使坏的人在其它域名中生成这些链接,估计影响会很小。 JFinal 目前的路由设计一是为了简单、二是为了匹配性能高到极致
返回顶部
顶部