正则表达式接受字母数字字符串但拒绝特定字符串(.htaccess)

时间:2013-10-30 04:56:17

标签: regex .htaccess

我正在使用.htaccess来阅读网址

RewriteRule ^([A-Za-z0-9-\.]+)/?$ profile.php?profileId=$1 [NC,L]

此行中的常规表达接受所有字母数字字符,但我希望它拒绝特定字符串 - “注册”

它接受: - example.com/434example.com/UserNameexample.com/UserName432格式

因此它也接受example.com/register,但我希望它拒绝它。我希望这种情况发生

example.com/register => example.com/login.php?page=register

如果可以拒绝更多字符串example.com/settings以及更多具有类似静态查询类型的字符串,请向我建议。

1 个答案:

答案 0 :(得分:1)

如果您希望它排除register,只需添加一个条件:

RewriteCond %{REQUEST_URI} !^/register
RewriteRule ^([A-Za-z0-9-\.]+)/?$ profile.php?profileId=$1 [NC,L]

或者在其之前添加您的其他规则:

RewriteRule ^register/?$ login.php?page=register [L]
RewriteRule ^([A-Za-z0-9-\.]+)/?$ profile.php?profileId=$1 [NC,L]

对于像设置这样的其他内容,你可以像上面的寄存器那样进行显式重写。