1

次のように mod_rewrite を使用してユーザー プロファイルへの URL を書き換えています: domain.com/users/JohnSmith。

users フォルダーをスキップして、単純に domain.com/JohnSmith のように配置した方がよいのではないかと考えていました。

私の質問: これを行うにはどうすればよいですか? また、システム フォルダーとサイト フォルダーを保持するにはどうすればよいですか? domain.com/browsersupport を探すと、profile.php ページで名前がチェックされ、データベースで検索されますが、その名前を持つユーザーがいないため、ページは表示されません。

PHPコードのifステートメントで修正できることはわかっています。また、ユーザーがそれらの名前を登録できないように、フォルダー名を予約する必要があります。しかし、プロファイルのルックアップについては、より適切な方法はありますか? .htaccess ファイル内のシステム フォルダーを除外して、profile.php がそのユーザーを検索しないようにするにはどうすればよいでしょうか?

4

2 に答える 2

1

そこで、次の 2 つの条件が重要になります。

  # if the request does NOT map to a file
  RewriteCOnd %{REQUEST_FILENAME} !-f
  # and the request does NOT map to a directory
  RewriteCOnd %{REQUEST_FILENAME} !-d
  # only THEN use this rewriterule
  RewriteRulle ....etc...

「動的」ページと動的ユーザーの両方がある場合、RewriteRule は、その名前のページが存在するかどうかをチェックするプロセスで終了し、存在しない場合にのみユーザー ページを提供する必要があります。

于 2012-06-19T19:49:33.433 に答える
0
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule #insert user rewrite rule here

これは、その指定された名前のフォルダーまたはファイルが存在しない場合にのみ、書き換えルールを適用します (あなたの質問はbrowsersupport、ドキュメントルートにそのようなものが存在することを暗示しているようです)。

はい、そのような特定の名前を登録できないことをユーザーに知らせることに熱心に取り組む必要があります。その場合、そのルートでユーザー名にアクセスできなくなります。

私はこれを行いましたが、おそらくすべての人に当てはまるわけではありませんが、私には有効な自主ルールがあります。ユーザー名は少なくとも 5 文字で、コントローラーは 4 文字以下である必要があります。

于 2012-06-19T19:48:44.040 に答える