htaccess中的dot给出了500个内部错误

时间:2013-10-13 15:12:58

标签: php apache .htaccess mod-rewrite

Options +Indexes
# or #
IndexIgnore *
RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?u=$1 
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?u=$1

我想在重写规则中添加点,以便在它们之间带点的用户名就像rahul.kapoor不起作用但rahulkapoor有效,请帮忙。

2 个答案:

答案 0 :(得分:2)

虽然点通常在正则表达式中具有特殊含义,但在字符类中使用时它不是元字符,因此在您的情况下您可以使用:

RewriteRule ^([a-zA-Z0-9_.-]+)/?$ profile.php?u=$1

请注意,我在末尾选择了正斜杠,因此您只需使用一行而不是两行。

编辑:您还可以使用元字符一词来进一步简化:

RewriteRule ^([\w.-]+)/?$ profile.php?u=$1

答案 1 :(得分:0)

使用.htaccess文件the dot character has a special meaning中使用的正则表达式。它意味着“(几乎)任何角色”。

如果你想使用“真正的”点字符,你必须用反斜杠来逃避它:

RewriteRule ^([a-zA-Z0-9_-]+\.?[a-zA-Z0-9_-]*)/$ profile.php?u=$1

我在这里所做的是将你的正则表达式规则改为匹配:

  1. 多个字母数字字符[a-zA-Z0-9_-]+
  2. 可选的点字符\.?
  3. 更多(可选)字母数字字符[a-zA-Z0-9_-]*