在mod_rewrite正则expression式中使用escape(。)字符

我目前有一个.htaccess文件设置这个规则:

RewriteRule ^([a-zA-Z0-9_-]+)$ user\.php?user=$1 [L]

它按预期工作: mysite.com/joe变成mysite.com/user.php?user=joe

我怎么能改变正则expression式包括在一个可能的用户名?

例如,我想mysite.com/joe.bloggsmysite.com/user=joe.bloggs

目前这带来了缺less404页面错误。

我试过^([a-zA-Z0-9\._-]+)$ user\.php?user=$1 [L]但是这会产生内部错误500(我认为这是由于无限循环造成的:如果没有用户指定,user.php被devise为redirect到主页。)

我对所有这些都很新颖(特别是正则expression式)。 谢谢你的帮助!

首先检查请求的URL是否不是文件或文件夹。 这将阻止像/user.php这样的URL的重定向循环

 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-zA-Z0-9_-.]+)$ user.php?user=$1 [L,QSA] 

. 在角色类中没有特别的意义,所以没有必要逃避它。

如果这样做没有帮助,请尝试在user.php的开始处放置die("Test") 。 这将允许您查看错误是来自重写还是PHP文件。