我想在开头用“/ en”选择所有字符串(部分URL),然后在中间选择一个随机字符串,最后选择“aspx”,例如: “/en/about-us-or/any-other-string-12345/page.aspx”
这是我目前的做法。
^/en.*aspx$
^/en
- 在开头是“/ en”
.*
- 然后是中间的随机字符串
aspx$
- 最后是一个aspx
我想知道为什么它不起作用。有什么想法吗?
答案 0 :(得分:1)
我的猜测是你的输入字符串是完整的URI(如:“http://www.example.com/en/about-us-or/any-other-string-12345/page.aspx”)。
如果是这样,你的正则表达式将失败,因为^标志匹配字符串的开头,在这种情况下,它恰好位于http之前的h。
$ character还会导致正则表达式失败,看起来像这样的“http://www.example.com/en/about-us-or/any-other-string-12345/page.aspx?参数=值”。
编辑:
要真正回答问题,请尝试从正则表达式中删除^和$:/en.*aspx
答案 1 :(得分:0)
/字符在正则表达式中有特殊含义 - 所以你必须将其转义(\ /)同样对点星(。*)进行分组:
^\/en(.*)aspx$
答案 2 :(得分:0)
我的猜测是你正在使用它作为.htaccess
重写规则的一部分。提交给RewriteRule的URL路径基于每个目录,并且永远不会有初始/
(它被剥离)。尝试从模式中删除初始/
,如下所示:
^en/(.*)\.aspx$