2011-12-19 46 views
0

これで、ユーザーがプロファイルを作成できるサイトを作成しています。私はユーザプロファイルをhttp://example.com/usernameのようにしたいが、問題はそれが他のルールと衝突することである。htacess URL URLの書き換えユーザー名が他の書き換えられたURLと競合する

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の「物語」はデータベース内でのユーザー名と検索があると考えていることで、その後、(予想通り)404ページをスローします。

example.com/user/usernameのようなユーザーページは必要ありません。

例:Digg.comはdigg.com/storyあり、digg.com/username

答えて

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] 
です