我目前有一个.htaccess文件设置这个规则:
RewriteRule ^([a-zA-Z0-9_-]+)$ user\.php?user=$1 [L]
它按预期工作: mysite.com/joe变成mysite.com/user.php?user=joe
我怎么能改变正则expression式包括在一个可能的用户名?
例如,我想mysite.com/joe.bloggs去mysite.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文件。