好的,我正在创建一个用户可以创建个人资料的网站。我希望用户配置文件与http://example.com/username类似,但问题是它与其他规则冲突。
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule story/(.*)/ story.php?id=$1
RewriteRule story/(.*) story.php?id=$1
#Profiles:
RewriteRule (.*)/ profile.php?id=$1
RewriteRule (.*) profile.php?id=$1
现在,当我尝试访问http://example.com/story/hello_world时,系统会认为URL中的“故事”是UserName并在数据库中搜索它,然后抛出404页面(如预期的那样)。
我不想要像example.com/user/username这样的用户页面。
示例:Digg.com有digg.com/story和digg.com/username
答案 0 :(得分:0)
您可以使用以下规则替换这两个规则,以防止将http://example.com/story/hello_world解释为用户的问题。
RewriteRule ^([^/])+/?$ profile.php?id=$1 [L]
如果您对用户名有更具体的规则,例如用户名是字母数字,长度在5到10个字符之间,那么更好的规则是
RewriteRule ^([a-zA-Z0-9]{5,10})/?$ profile.php?id=$1 [L]