【问题标题】:Case Sensitive URL区分大小写的 URL
【发布时间】:2016-06-19 21:02:59
【问题描述】:

我推出了一个小网站。

我发现我收到了用户的错误,经过调查发现他们尝试使用的网址都是小写的,而我已将它们声明为 camelCase。

我不知道为什么这些用户应该尝试使用全小写(我无法想象有人会真正花时间进行更改:

www.mysite.com/myAction.do

www.mysite.com/myaction.do

但是我无论如何也想不出这会被改变。有没有其他人经历过这种情况:

然后,您的映射文件中的 yourAction.do 会尝试以 youraction.do 的形式被用户访问?

我正在使用 Struts2.3.1,sitemesh 2.4.2 - 我从未听说过或遇到过这样的情况,如果你们中的任何人遇到相同或类似情况,我想就可能导致它的原因提出建议。

是否有任何浏览器可以将 camelCase.do 重新映射到 camelcase.do ?无论出于何种原因。

我能想到的唯一“解决方案”(两个非常丑陋和不优雅的解决方法中最好的一个)是在 struts.xml 中复制动作映射

<action name="myAction" class="myActionClass" />
<action name="myaction" class="myActionClass" /> //added extra but what a 'dumb' solution

编辑:

是否可以对方法做同样的事情?

这样:

myAction!clear.do

仍将正确映射到 URL:

myaction!clEAr.do 

?

我从重新阅读我的错误日志中注意到,导致大多数错误的是 ULR 中的“错误案例”方法。

【问题讨论】:

    标签: regex url configuration struts2 sitemesh


    【解决方案1】:

    您可以使用 regex 模式匹配器和 (?i) 在正则表达式正文中“嵌入”匹配标志。例如

    <constant name="struts.patternMatcher" value="regex" />
    
    <action name="{(?i)myaction}" class="myActionClass" /> 
    

    【讨论】:

    • 谢谢!虽然我已经添加了一个编辑来涵盖同样问题的方法。
    • @Roman C +1 不错的答案,即使我正在寻找这个 :) 但在我的情况下它不会工作,因为我使用 {} AND {(?i)myaction} 总是执行第一个 :p
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    相关资源
    最近更新 更多