用电子邮件地址重写规则

时间:2011-05-12 15:41:08

标签: regex .htaccess mod-rewrite

我正在尝试使用包含电子邮件地址的RewriteRule。我认为我的正则表达式出了问题。

RewriteRule ^user/verify/([a-zA-Z0-9_-.@]+)/([a-zA-Z0-9]+)/?$ user.php?email=$1&token=$2 [L]

有人有任何想法吗?

寻找:

http://www.example.com/user/user@email.com/sdfdsfa7dfs6dsfa6dsf8/

2 个答案:

答案 0 :(得分:2)

像这样使用你的规则:

RewriteRule ^user/verify/([^/]*)/(.*)/?$ user.php?email=$1&token=$2 [L,NC]

这将捕获user/verify/sdfdsfa7dfs6dsfa6dsf8/之间的所有内容作为电子邮件地址。

答案 1 :(得分:1)

想到的一个明显原因是你正在寻找

  

www.example.com/的用户 /user@email.com/sdfdsfa7dfs6dsfa6dsf8 /

但你的正则表达式

  

^的用户/验证 /([A-ZA-Z0-9 _-。@] +)/([A-ZA-Z0-9] +)/?$

但也许这只是你问题中的一个错误?


至于电子邮件地址,已经有很多关于这个主题的讨论:regex+email。可能存在与您的正则表达式不匹配的电子邮件地址,例如其中加上+(加号)。