0

我一直在与正则表达式作斗争,在阅读了 45 分钟后,我的头晕目眩。负前瞻,什么...?(?:/(?:(?!s\d+).)*)+$<--- OMG!!!

:(

所以,我有一个规则

RewriteRule /([0-9]+) /?id=$1 [R]

当 url 为www.hi.com/123

如果 url 是or ,我怎样才能让它刷新到/(在这种情况下的文档根目录)?www.hi.com/123abcwww.hi.com/a123bc

我只是想确保只有带有数字的 url 而没有其他匹配。

我试过了

RewriteRule /([0-9]+)([^a-z]+) /map.htm?marker=$1 [R]

但这刷新到www.hi.com/?id=404,奇怪的是。

4

1 回答 1

0

要匹配正则表达式中的 1 个或多个数字,它将是:

[0-9]+

要匹配正则表达式中的 1 个或多个数字或字母,它将是:

[0-9a-zA-z]+

对于您的情况,RewriteRule 规则将是:

RewriteRule ^([0-9a-z]+)/?$ /map.htm?marker=$1 [NC,L,R=302]

这将匹配/123abcOR /123abc/OR /123OR /abc/,请注意尾随斜杠是可选的。我使用的标志是:

NC    - Ignore Case
L     - Last
R=301 - Use http status 302 for resulting URL

我强烈建议您阅读 mod_rewrite 参考文档:Apache mod_rewrite 简介

但是,您还问:

如果 url 是 www.hi.com/123abc 或 www.hi.com/a123bc,我怎样才能让它刷新到 / (在这种情况下是文档根目录)?

该规则将是:

RewriteRule ^([0-9a-z]+)/?$ / [NC,L,R=302]
于 2013-09-30T03:27:02.637 回答